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

时间:2018-12-10 09:01:17

标签: javascript string date

我刚刚发现了一种意外的行为,其中我将一个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 个答案:

答案 0 :(得分:4)

发生问题是因为(Application.Current.MainWindow as MainWindow).mainFrame.Content = recoveryPage; 剥离了日期的毫秒部分。 当您尝试再次从字符串中重建日期时,毫秒部分将默认为零,因为未再次提供/提供。

答案 1 :(得分:2)

因为toString()将日期精确地转换为ISO 8601的秒数。

您要比较的日期相差毫秒。