【发布时间】:2018-07-26 11:44:10
【问题描述】:
对于我的 WebApp,我正在使用 Jest 编写单元测试,我的开发环境是 IntelliJ Ultimate 2018.1。
在我的单元测试中,我需要从字符串创建 Date()。我的问题是,当我与同事共享此单元测试时,它不起作用,因为 Date(String) 返回不同的日期(他使用的是相同的开发环境)。
例如,在我的环境中,当我执行 new Date("2018-05-12T19:00:00") 我得到 Sat May 12 2018 19:00:00 GMT+0200(浪漫夏令时间)
当我的同事执行完全相同的代码行时,他得到 2018 年 5 月 12 日星期六 21:00:00 GMT+0200(巴黎,马德里(heure d'été))
当我在日期末尾添加 Z 时,例如 new Date("2018-05-12T19:00:00Z") 我得到 Sat May 12 2018 21:00:00 GMT +0200(浪漫夏季时间),他与 2018 年 5 月 12 日星期六 21:00:00 GMT+0200(巴黎,马德里(heure d'été))获得相同的日期
为什么在使用 new Date("2018-05-12T19:00:00") 时会出现 2 小时的差异?我们在同一个时区。
感谢您的帮助!
【问题讨论】:
-
因为一个浏览器将其解释为 UTC 而另一个则解释为本地时区。但是您已经找到了解决方案:在字符串上放置一个明确的时区。
-
我的单元测试由 IntelliJ 中的 Jest 执行。相信运行时环境是 Node.js 而不是浏览器。另外,为什么时区不同? Romance Summer Time 和 Paris/Madrid 是同一时区。
-
我不是特别了解 Jest,但这只是表明您和您的同事设置了不同的环境。
-
可能应该关闭,请参阅Why does Date.parse give incorrect results? 但我喜欢 cmets 和答案。 :-)
标签: javascript date timezone jestjs