javascript - 使用 new Date() 设置的日期不正确

标签 javascript date

当使用下面的行时,我期望结果为“22/09/2017 14:05:43”,但它实际上返回“09‎/‎10‎/‎2018‎ ‎14‎:‎05” ‎:‎43'。

var theDate = new Date('22/09/2017 14:05:43').toLocaleString();

我知道有一些 js 库,例如 moment.js,可用于大量日期时间操作,但我只是想知道是否有人知道为什么会发生这种情况以及如何让它返回预期的结果日期?

最佳答案

日期字符串的解析主要取决于实现,因此通常建议避免使用内置解析器。大多数浏览器将采用 xx/xx/xxxx 模式的 JavaScript 日期视为 MM/DD/YYYY,因此 22/09/2017 被视为无效日期(例如 Safari、Firefox、Chrome)或 2017 年 22 月 9 日(显然是您的浏览器)。

您的浏览器将其解释为“22 月 9 日”,因此您的最终日期是 2018 年 10 月 9 日,2017 年已经过去 22 个月零 9 天了。

要解决此问题,您可以将字符串分成几部分并将它们交给构造函数,从而避免使用内置解析器(记住从月份数字中减去 1):

new Date(2017, 8, 22, ...)

引用MDN's Date documentation了解更多信息。

关于javascript - 使用 new Date() 设置的日期不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46808363/

相关文章:

javascript - JS - 使用空格键更改元素的颜色

ruby-on-rails - ruby 日期方程不返回预期的真值

python - Pandas:向表示日期的长整数添加 0

javascript - 动态添加 React 组件

javascript - AngularJS 复杂表头

javascript - 我可以在同一页面中使用两个不同版本的backbone.js吗?

javascript - HmmerJS - 使 mousedown 在浏览器和触摸设备上保持一致

Angular 2 - 在构造函数中构建日期 - 类型 'Date' 不可分配给类型 'string'

正则表达式:日期完全匹配

excel - 如何使英文日期格式在法文 Excel 中工作?