【问题标题】:Live Digital clock with timezones带时区的实时数字时钟
【发布时间】:2016-03-03 10:04:06
【问题描述】:

我有一个正在运行的数字时钟,它运行良好,但我希望多个时钟在不同的时区运行。我在西海岸,当人们在不同的时区观看时,我希望时间有所不同。我怎样才能做到这一点?

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

}); 

【问题讨论】:

  • 您关心准确性吗?如果你这样做,不要使用浏览器的时间,使用你的服务器的时间。
  • 嗯,请问我是怎么做到的?是的,准确性很重要
  • 中午,这将显示 12 AM,而按照惯例显示 12 PM。默认情况下,这将显示基于主机系统设置的时间(即“本地”时间)。如果要显示特定时区的时间,则通过所需的偏移量调整 UTC 值(例如使用 setUTCMinutes)并使用 UTC 方法(getUTCMinutes 等)来格式化日期字符串。

标签: javascript date time


【解决方案1】:

要根据当前系统时间获取任何时区的时间(这可能是错误的,但这可能并不重要),创建一个 Date 并通过所需的偏移量调整 UTC 时间值,然后使用 UTC 方法构建您的格式化字符串。

例如

/*  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));

你说你在“西海岸”,但不是在哪里,所以我假设美国的时区偏移可能是 UTC-08:00(-480 分钟)。因此,要始终显示该时区的时间(通常需要注意系统时钟可能不正确),您可以:

getTimeInZone(-480);

另请注意,innerText 是 IE 专有属性,并非所有浏览器都支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2017-08-15
    • 1970-01-01
    • 2012-06-08
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多