0

シンプルな JavaScript を使用して自分の国の現地時間を表示していますが、正しく表示されず、正しい順序で表示されていないようです。真夜中の 12 時を過ぎると、時計は本来午前にリセットされますが、時刻は午後に表示され続けます。

体:

<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;
}

結果は次のとおりです。1: 57 AMであるはずの 13:57 PMです。それを修正する方法がわからない。

4

2 に答える 2

1

currentTime.getUTCHours() + 8よりも大きくなる可能性があり24、多くのエラーにつながります (時間が正しくないだけでなく、日、月、または年も正しくないなど)。

タイム ゾーンと時間の書式設定をもう少し適切に処理するには、moment.jsなどのライブラリを探す必要があります。

于 2013-09-13T18:05:55.937 に答える
0

これにより、タイムゾーンの現在の方法を実行できますが+8、この関数に基づいて正確に計算できます。

function calcTime(city, offset) {

    // create Date object for current location
    d = new Date();

    // convert to msec
    // add local time zone offset 
    // get UTC time in msec
    utc = d.getTime() + (d.getTimezoneOffset() * 60000);

    // create new Date object for different city
    // using supplied offset
    nd = new Date(utc + (3600000*offset));

    return nd
}

[ソース]

于 2013-09-13T18:13:05.700 に答える