我有一个正在运行的数字时钟,它运行良好,但我希望有多个时钟以不同的时区运行。我在西海岸,当人们在不同的时区看它时,我希望时间有所不同。我怎么能做到这一点?
function displayTime() {
var currentTime = new Date();
var hours = currentTime.getHours();
var minutes = currentTime.getMinutes();
var seconds = currentTime.getSeconds();
var meridiem = "AM";
if (hours > 12) {
hours = hours - 12;
meridiem = "PM";
}
if (hours === 0) {
hours = 12;
}
if(hours < 10) {
hours = "0" + hours;
}
if(minutes < 10) {
minutes = "0" + minutes;
}
if(seconds < 10) {
seconds = "0" + seconds;
}
var clockDiv = document.getElementById('clock');
clockDiv.innerText = hours + ":" + minutes + ":" + seconds + " " + meridiem;
}
displayTime();
setInterval(displayTime, 1000);
});
答案 0 :(得分:0)
要根据当前系统时间(可能不对,但这可能无关紧要)在任何时区获取时间,请创建一个日期,然后按所需偏移量调整UTC时间值,然后使用UTC方法构建你的格式化字符串。
e.g。
/* Return a time string in h:m:s a/p format
**
** @param {number} offsetInMinutes - offset of required timezone in minutes
** @returns {string} formatted time string
*/
function getTimeInZone(offsetInMinutes) {
function z(n) {return (n<10?'0':'') + n;}
var d = new Date();
d.setUTCMinutes(d.getUTCMinutes() + offsetInMinutes);
var h = d.getUTCHours();
return z(h%12||12) + ':' + z(d.getUTCMinutes()) + ':' +
z(d.getUTCSeconds()) + ' ' + (h<12? 'am' : 'pm');
}
// Time at UTC-08:00
document.write(getTimeInZone(-480));
&#13;
你说你在西海岸&#34;而不是在哪里,所以我假设美国可能的时区偏移是UTC-08:00(-480分钟) )。因此,为了始终显示该时区的时间(通常需要注意系统时钟可能不正确),您可以这样做:
getTimeInZone(-480);
另请注意, innerText 是IE专有属性,并非在所有浏览器中都受支持。