浏览器中 JavaScript 日期的不同行为。
我在 Firefox 中创建了新的日期,但它返回了错误的值。
在火狐浏览器中:
new Date(2017,2,22)
Date 2017-03-21 T19:30:00.000Z
在 Chrome 中:
new Date(2017,2,22)
Wed Mar 22 2017 01:00:00 GMT+0430 (Iran Daylight Time)
如何让 Firefox 像 Chrome 一样显示日期?
最佳答案
您的问题似乎与浏览器如何应用夏令时有关。在德黑兰,从 2017 年 3 月 22 日开始,夏令时的时钟向前拨动。因此 2017-03-22 00:00:00 立即变为 2017-03-22 01:00:00。
Firefox 似乎不会在午夜时分应用夏令时,而 Chrome 则会。它似乎应用了错误的偏移量(它实际上从标准时间减去一个小时)直到 01:00:
new Date(2017,2,22,0,59); // Tue Mar 21 2017 23:59:00 GMT+0330 (IRST)
new Date(2017,2,22,1,0); // Wed Mar 22 2017 01:00:00 GMT+0430 (IRST)
并且两者使用相同的时区名称缩写。将其报告为错误。
浏览器 Date 对象存在许多此类小问题。如果您依赖于客户 Date 行为,请准备好发现它们。
编辑
看来您可以使用 Date.UTC 来解决此问题:
// One minute to midnight in Tehran, daylight saving not applied
new Date(Date.UTC(2017,2,21,20,29)); // Tue Mar 21 2017 23:59:00 GMT+0330 (IRST)
// At midnight in Tehran, daylight saving applied
new Date(Date.UTC(2017,2,21,20,30)); // Wed Mar 22 2017 01:00:00 GMT+0430 (IRST)
仍然有不正确的时区缩写,但无论如何你都不应该依赖它,其余的似乎都是正确的。
关于javascript - Firefox 中的日期值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41518403/