Почему Я получаю две разные даты с новой Date(), когда я передаю дату или когда я передаю дату и время?
Поскольку разбор строки с датой конструктора (и Date.parse, они эквивалентны) во многом зависит от реализации, и поэтому настоятельно рекомендуется против.
Date.parse('2015-03-14')
// 1426291200000
new Date(1426291200000)
// Fri Mar 13 2015 17:00:00 GMT-0700 (PDT)
ISO 8601 даты в формате, рассматриваются как UTC в браузерах, совместимых с ES5 и более поздних (и UTC, местных или недействительных предыдущими реализациями), однако не все браузеры совместимы. Кроме того, указанное поведение несовместимо с ISO 8601, в котором указано, что даты без часового пояса должны рассматриваться как локальные.
Date.parse('2015-03-14 00:00:00')
// 1426316400000
new Date(1426291400000)
// Fri Mar 13 2015 17:03:20 GMT-0700 (PDT)
Строка «2015-03-14 00:00:00» не соответствует ISO 8601, поэтому разбор полностью зависит от реализации и может рассматриваться как UTC, локальный или недействительным. Если сделано совместимым с добавлением «Т»:
"2015-03-14T00:00:00"
он должен рассматриваться как местные (отмечая ранее упомянутое предостережение о несоответствующих реализации).
Настоятельно рекомендуется всегда вручную разбирать строки. Используйте библиотеку, один из многих хороших парсеров, которые находятся вокруг или просто пишут вашу собственную функцию, достаточно 2 или 3 строки.
'new Date (1426291400000)' не дает результата, как вы показали. – Rayon
@RayonDabre Вы в Индии .. Я в Калифорнии, США ...Вы имеете в виду, что результаты отличаются от разных часовых поясов? –
https://jsfiddle.net/zpzswmqr/ – Rayon