1

我正在使用一个简单的 javascript 在网站上显示我所在国家/地区的当地时间,但它似乎被破坏了。午夜 12 点之后,时钟应该重置为上午,但它一直以下午显示时间(例如,下午 1 点而不是上午 1 点)

身体:

<body onload="updateClock(); setInterval('updateClock()', 1000 )">

//div tags, elements etc

</body>

JS:

function updateClock (){

var currentTime =  new Date();
var currentHours = currentTime.getUTCHours() + 8; 
var currentMinutes = currentTime.getUTCMinutes();
var currentSeconds = currentTime.getUTCSeconds();

// var bucurestiOffset = 3*60000;
// var userOffset = currentTime.getTimezoneOffset()*60000;

currentMinutes = ( currentMinutes < 10 ? "0" : "" ) + currentMinutes;
currentSeconds = ( currentSeconds < 10 ? "0" : "" ) + currentSeconds;

var timeOfDay = ( currentHours < 12 ) ? "AM" : "PM";
currentHours = ( currentHours > 12 ) ? currentHours - 12 : currentHours;
currentHours = ( currentHours == 0 ) ? 12 : currentHours;

var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds + " " + timeOfDay;
  document.getElementById("clock").firstChild.nodeValue = currentTimeString;
}

结果:下午 13:52:40。我所在的当前时间是凌晨 1 点 52 分。不知道如何解决这个问题。

4

2 回答 2

0

If you simple display UTC time use ;

new Date().toJSON()
于 2013-09-13T17:17:00.917 回答
-1

Change this line

var currentHours = currentTime.getUTCHours() + 8;

to this

EDIT:

var currentHours = (currentTime.getUTCHours() + 8) % 24;

When the UTC time in hours becomes lets say 19 hours, then your currentHours variable becomes 27 hours instead of 3 hours which is why the problem occurs. "Moddin" it solves the problem.

于 2013-09-13T17:16:25.247 回答