JS Date to ISO String Странное поведение - PullRequest
0 голосов
/ 14 февраля 2019
new Date("2018-09-9").toISOString()

Это дает 2018-09-09T04:00:00.000Z

Где, как

new Date("2018-09-19").toISOString()

Дает "2018-09-19T00:00:00.000Z"

Я из США, поэтому 4:00:00 кажется правильным временем UTC, но если я дам любую дату больше 9, это даст 00:00:00 я что-то упустил?

1 Ответ

0 голосов
/ 14 февраля 2019

Это правильное поведение.См. Справочник по Javacript Date: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

Примечание: синтаксический анализ строк даты с помощью конструктора Date (и Date.parse, они эквивалентны) настоятельно не рекомендуется из-заБраузерные различия и несоответствия.Поддержка строк формата RFC 2822 предоставляется только по соглашению.Поддержка форматов ISO 8601 отличается тем, что строки, содержащие только дату (например, «1970-01-01»), обрабатываются как UTC, а не как локальные.

Ваша вторая версия использует формат ISO 8601 YYYY-MM-DD, который рассматривается как UTC.Если в первом примере вы используете 2018-09-09 вместо 2018-09-9, оно также будет обрабатываться как UTC вместо местного времени.

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