繁体   English   中英

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

[英]JavaScript: Date Object Bug in Specific Time Zone

我有一个使用 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以及Daylight vs. Standard
(我已经在 Chrome 中以相同的结果测试了该问题)

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

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

但我想知道这里发生了什么?
+03:30有问题吗? 日光和标准之间有什么区别?

那真是怪了...

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

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

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

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

希望能帮到你☺

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM