1

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

所以我改变了我的 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不正确!在此处输入图像描述

(注意19 Mar23:00:00以及Daylight vs. Standard
(我已经在 Chrome 中测试了这个问题,结果相同)

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

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

但我想知道这里发生了什么?
是否+03:30有任何错误?日光和标准有什么区别?

这很奇怪...

4

2 回答 2

1

日期对象没有问题。一些国家在春季和秋季观察夏令时以获得更多的日光时间。在这里检查。碰巧的是,2005 年 3 月 20 日,伊朗的时间实行夏令时。正确显示他们观察的时间(注意与 GMT 的差异从 +0430 变为 +0330)。在 2006 年的那一天,他们遵循常规时间,不受夏令时的约束。

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

于 2013-02-08T12:17:09.480 回答
0

您应该统一时区或使时区显示为客户时区。例如澳大利亚,我在下面使用 AU 悉尼时区

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

希望对你有帮助☺</p>

于 2020-07-30T05:54:27.783 回答