我有一个在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
(正确)
时区:太平洋(美国和加拿大)-08:00
(正确)
时区:纽芬兰-03:30
(正确)
时区:中国+08:00
(正确)
时区:伊朗+03:30
(不正确!)
(请注意 3月19日和 23:00:00 和日光与标准)
(我在Chrome中测试了同样结果的问题)
我用这个解决方案解决了这个问题:
new Date( Date.UTC(2005, 2, 20) );
但我想知道这里发生了什么?是+03:30
有没有错误? Daylight和Standard有什么区别?
这很奇怪......
答案 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);
我希望对您有帮助>