Почему Javascript Date из строки отличается от той же даты из объекта Date - PullRequest
0 голосов
/ 10 декабря 2018

Я только что обнаружил неожиданное поведение, когда я поместил метку времени (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 голосов
/ 10 декабря 2018

Проблема возникает из-за того, что .toString() удаляет часть даты в миллисекундах.Когда вы попытаетесь восстановить дату снова из строки, часть миллисекунд будет по умолчанию установлена ​​на ноль, потому что она не была предоставлена ​​/ предоставлена ​​снова.

0 голосов
/ 10 декабря 2018

Поскольку toString() преобразует дату в ISO 8601 с точностью до секунды.

Сравниваемые даты отличаются на миллисекунды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...