上午12点后显示UTC时间不正确

时间:2013-09-13 17:09:38

标签: javascript

我正在使用简单的JavaScript在网站上显示我所在国家/地区的当地时间,但似乎已被打破。在午夜12点之后,右边的时钟应该重置为AM,但它会在PM中显示时间(例如,下午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 AM。 不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

如果你简单地显示UTC时间使用;

new Date().toJSON()

答案 1 :(得分:-1)

更改此行

var currentHours = currentTime.getUTCHours() + 8;

到这个

修改

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

当以小时为单位的UTC时间变为19小时后,您的currentHours变量将变为27小时而非3小时,这就是问题发生的原因。 &#34; Moddin&#34;它解决了这个问题。