[英]Create a date object in a specific time zone and convert it to UTC in 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.