【发布时间】:2019-09-01 12:48:41
【问题描述】:
在 Chrome、Firefox 和 Opera(在 Windows 10 和/或 Mac 上)中,运行 moment('1957-10-19').isDST() 会返回 false
在 Edge 和 IE11(在 Windows 上)和 Yandex(在 Windows 和 Mac 上)和 Safari(在 Mac 和 iPhone 上)中,相同的代码返回 true
在 C# .NET 中,new DateTime(1957, 10, 19).IsDaylightSavingTime() 返回 true
哪些是正确的?
有什么好的方法可以处理吗?
我在将此类日期从 C# 序列化为 JavaScript 时发现了这一点。因为服务器和客户端在日期是否为 DST 上不一致,所以日期提前了一个小时,即前一天晚上 11 点。
这不一定是 moment.js 问题,因为底层 JavaScript 计算得出相同的答案。这些测试是在“America/Denver”时区的计算机和 BrowserStack 中“America/Los_Angeles”时区的计算机上在 momentjs.com 网站上完成的。
【问题讨论】:
-
这已经被问过几次了,但归结为 Windows 没有跟踪那么远的历史时区数据(因此应用了更新的规则),并且一些浏览器带有自己的时区数据。 (
false是正确的)。
标签: .net google-chrome firefox timezone momentjs