Подтвердить что ты не робот

Разница между '01' и '1' в дате JavaScript

В чем разница между датами "2015-10-01" и "2015-10-1" в JavaScript?

new Date('2015-10-1')

Это возвращает 'Thu Oct 01 2015 00:00:00 GMT-0300'

new Date('2015-10-01')

Возвращает 'Wed Sep 30 2015 21:00:00 GMT-0300'

4b9b3361

Ответ 1

То, что я вижу после локального выполнения,

  • Дата в локальном часовом поясе
  • Дата в UTC

В соответствии с MDN docs Date.parse будет считать дату UTC-формата, если она имеет завершенную DD иначе она будет принимать в формате локального часового пояса.


Подробное объяснение изменения месяца: (комментарии)

new Date('2015-10-1'), когда вы выполняете этот вывод, выдается "Thu Oct 01 2015 00:00:00 GMT-0300". то есть его местное время, и это GMT -3hrs.

Но когда вы выполняете new Date('2015-10-01'), вывод будет "Ср. 30 сентября 2015 21:00:00 GMT-0300", который находится в UTC. т.е. 3 часа минус с вашего локального времени.

Итак, это 1 октября полуночи -3 часа, что является днем ​​предыдущего дня. т.е. 30 сентября 21 ч.

Ответ 2

Из документация:

new Date(dateString)

DateString

Строка, представляющая дату RFC2822 или ISO 8601 (могут использоваться другие форматы, но результаты могут быть неожиданными).

'2015-10-1' не является ни одним из поддерживаемых форматов и, как и было обещано, вы получаете неожиданные результаты (тогда как '2015-10-01' является допустимой датой ISO 8601).

Ответ 3

Это связано с тем, что JavaScript ожидает определенное количество символов в строке даты.

Здесь у вас два формата:

(YYYY-MM-DD)

и

(YYYY-MM-D)

Я удивлен, что второй возвращает что-нибудь вообще, поскольку он, похоже, не соответствует какому-либо действительному формату JavaScript Date String. Если он возвращается, как вы говорите, то JavaScript, скорее всего, интерпретирует его как нечто иное, чем Years, Months and Days.