JavaScript Date toISOString возвращает неожиданный результат до 3 апреля 1978 г. - PullRequest
0 голосов
/ 06 апреля 2020

Когда я пытаюсь использовать следующий код в моей консоли JS, он возвращает правильное обозначение UT C (-2 часа):

new Date('1978/04/03').toISOString()
-> "1978-04-02T22:00:00.000Z"

Однако, начиная со 2 апреля и ранее, он демонстрирует другое поведение: вычитает только 1 час вместо 2:

new Date('1978/04/02').toISOString()
-> "1978-04-01T23:00:00.000Z"

1 Ответ

2 голосов
/ 06 апреля 2020

Скорее всего, наступит летнее время, но учтите, что ваш формат ввода (yyyy/mm/dd) официально не поддерживается, а это означает, что, полагаясь на него, вы полагаетесь на "... любую реализацию - специфицированные c эвристические или специфические для реализации c форматы даты ... ", которые поддерживает JavaScript движок, которые различаются в зависимости от движка (например, от браузера к браузеру). Если у вас есть формат, который не является официальным поддерживаемым форматом , лучше всего проанализировать его самостоятельно.

Но я подозреваю, что вы обнаружите, что даже new Date(1978, 3, 3) и new Date(1978, 3, 2) есть разница в один час, так как ваш JavaScript движок, похоже, разбирает эту строку.

...