How do I specify the time zone when creating a JavaScript Date?
我有一个倒计时时钟,设定为2014年1月1日上午8点倒计时。
我使用以下代码来设置日期:
1 | var futureDate = new Date(2014, 0, 1, 8, 0, 0, 0); |
这有效,但我想更进一步,并将其设置为特定的时区。 在我的情况下UTC -7。
我已经阅读了这个使用说明的答案:
1 | new Date(Date.UTC(year, month, day, hour, minute, second)) |
但我感到困惑的是我如何将时区设置为UTC -7,而我在线阅读的内容只会让我更加困惑。
有人可以解释
注意:任何答案必须是仅客户端代码。
Can someone explain how Date.UTC works
Date.UTC为所提供的年,月,日等创建时间值,没有任何偏移。 因此,如果客户端计算机设置为UTC +05:00,则:
1 | var d = new Date(Date.UTC(2013, 11, 30, 12, 0, 0)); |
将于2013年12月30日在格林威治创建相当于中午的日期。 提醒日期将打印相当于2013-12-30T17:00:00 + 05:00的当地时间(假设+5:00)。
and how do I set a timezone so my countdown clock is counting down based on the specified timezone?
您无法设置时区,但是您可以使用UTC值创建日期对象,调整偏移的小时和分钟,然后使用UTC方法获取倒计时的日期和时间组件。
例如
1 2 3 4 5 6 7 8 9 10 11 12 | function z(n){return (n < 10? '0' : '') + n;} var d = new Date(Date.UTC(2012, 11, 30, 12, 0, 0)); d.setUTCHours(d.getUTCHours() - 7); alert(d.getUTCFullYear() + '-' + z(d.getUTCMonth() + 1) + '-' + z(d.getUTCDate()) + 'T' + z(d.getUTCHours()) + ':' + z(d.getUTCMinutes()) + ':' + z(d.getUTCSeconds()) + '-07:00' ); // 2012-12-30T05:00:00-07:00 |
如果使用非UTC方法,则本地偏移将影响结果。