3

以下脚本应该根据 -10(夏威夷)的偏移量显示当前本地时间,但它不起作用。

无法弄清楚我哪里出错了。

<h3>Current Time in Arizona is 
<script type="text/javascript">
<!--
    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()

    if (minutes < 10)
    minutes = "0" + minutes

    var suffix = "AM";
    if (hours >= 12) {
    suffix = "PM";
    hours = hours - 12;
    }
    if (hours == 0) {
    hours = 12;
    }

    document.write("<b>" + hours + ":" + minutes + " " + suffix + "</b>")
//-->
</script>
</h3>
4

2 回答 2

5

首先,您显示的代码仅返回当前本地时间。它甚至不会尝试针对特定时区进行更改。

其次,您需要阅读时区标签 wiki。特别是,阅读标题为“时区!=偏移”的部分。

现在碰巧亚利桑那州和夏威夷州目前不使用夏令时,因此如果您只关心这两个问题,您可以通过偏移量进行调整。但我确定您正在寻找更通用的解决方案。

要正确执行此操作,您将需要一个实现 IANA 时区数据库的库。 我在这里列出了其中的几个。例如,下面是使用moment.jsmoment-timezone插件显示洛杉矶当前时间的示例:

moment().tz("America/Los_Angeles").format("h:mm a")

如果您只是在寻找一种快速简便的方法在您的网站上放置特定时区的时钟,那么我建议您使用timeanddate.com 提供的免费解决方案

于 2013-09-06T00:42:47.863 回答
0

编写一个函数,以分钟/您的选择将日期移动一些偏移量

function offsetDate(offsetMinutes, d) {
    if (d) d = new Date(d);
    else d = new Date();
    if (offsetMinutes) d.setUTCMinutes(d.getUTCMinutes() + offsetMinutes);
    return d;
}
offsetDate(-10*60); // Thu Sep 05 2013 12:03:06 GMT+0100 (GMT Daylight Time)

现在使用UTC函数来获取时间

于 2013-09-05T21:04:10.983 回答