JavaScript:特定时区中的日期对象错误

时间:2013-02-08 12:06:59

标签: javascript date timezone

我有一个在JavaScript中使用Date对象的程序。我注意到该程序在所有时区(国家/地区)都无法正常运行。

所以我改变了我的Windows时区,在特定日期我得到了奇怪的结果。

使用这些代码行,我在许多时区中都有相同的结果,但其中一个(可能是一些):

console.log( new Date( 2005, 2, 20 ) ); // 2005 Mar 20
console.log( new Date( 2006, 2, 20 ) ); // 2006 Mar 20


时区:UTC 00:00(正确) enter image description here

时区:太平洋(美国和加拿大)-08:00(正确) enter image description here

时区:纽芬兰-03:30(正确) enter image description here

时区:中国+08:00(正确) enter image description here

时区:伊朗+03:30不正确!enter image description here

(请注意 3月19日 23:00:00 日光标准
(我在Chrome中测试了同样结果的问题)

我用这个解决方案解决了这个问题:

new Date( Date.UTC(2005, 2, 20) );

但我想知道这里发生了什么?是+03:30有没有错误? Daylight和Standard有什么区别?

这很奇怪......

2 个答案:

答案 0 :(得分:1)

日期对象没有问题。一些国家在春季和秋季季节观察夏令时,以获得更多的白昼时间。 Check Here。碰巧的是,2005年3月20日,伊朗的时间受到夏令时的影响。正确显示他们观察的时间(请注意,与GMT的差异从+0430变为+0330)。 2006年的那一天,他们遵循常规时间而不受夏令时的影响。

请参阅评论中的“Frits van Campen”链接。

答案 1 :(得分:0)

您应该统一时区或使timeZone出现为客户时间zome。 以澳大利亚为例,我在澳大利亚悉尼时区使用以下

let expirationTime = new Date().toLocaleString("en-US", {timeZone: "Australia/Sydney"});
expirationTime = new Date(expirationTime);

我希望对您有帮助

相关问题