我刚发现一个意外的行为,我在一个隐藏的表单字段中放置了一个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 回答
因为
toString()
将日期精确转换为ISO 8601到第二个 .您比较的日期与毫秒不同 .
出现问题是因为
.toString()
剥离了日期的毫秒部分 . 当您尝试再次从字符串重建日期时,毫秒部分将默认为零,因为它没有再次给出/提供 .