javascript - Firefox 中的日期值错误

标签 javascript google-chrome date firefox

浏览器中 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/

相关文章:

javascript - 触发 takeUntil 操作时执行函数

javascript - HTML jQuery .load() 不工作

javascript - Firefox和Chrome用户关闭 “Physical Location”提示如何处理?

java - 需要根据当前日期列出前几个季度的列表

java - java 中的日期比较搜索今天、明天

Levy C曲线的Javascript递归实现

javascript - Chrome 控制台中的奇怪行为

google-chrome - 如何使用 puppeteer 在 "headful"chrome 中加载多个扩展?

r - 使用 fill 有条件地填充 NA 值,无需循环

javascript - Node.js 上的 Access-Control-Allow-Origin 没有 Express.js