首页 文章

为什么字符串中的Javascript日期与Date对象的日期不同

提问于
浏览
2

我刚发现一个意外的行为,我在一个隐藏的表单字段中放置了一个timeStamp( Date ) . 在提交(更新)表单时,我对文档增量进行了一些检查(因为我只想更新编辑的差异) .

在那一点上,我面临的是,未经编辑的隐藏 Date 字段已被检测为不同 .

我将其分解为以下复制代码:

const date = new Date() // Mon Dec 10 2018 09:42:34 GMT+0100 (Timezone goes here)
const dateStr = date.toString()

console.log(date)                // "2018-12-10T08:42:34.388Z"
console.log(new Date(dateStr));  // "2018-12-10T08:42:34.000Z"

只有在将日期格式化为String时才会发生这种情况(例如,当我将其指定为输入字段的值时) .

任何人都可以解释为什么会这样吗?

2 回答

  • 4

    因为 toString() 将日期精确转换为ISO 8601到第二个 .

    您比较的日期与毫秒不同 .

  • 2

    出现问题是因为 .toString() 剥离了日期的毫秒部分 . 当您尝试再次从字符串重建日期时,毫秒部分将默认为零,因为它没有再次给出/提供 .

相关问题