2016-04-18 3 views
3

Я создаю дату с new Date(). Когда я это делаю, он вычитает день. Вот код:Почему Date() удаляет день? - Javascript

var dateString = "2016-04-10"; 
var date = new Date(dateString); 

// date = Sat Apr 09 2016 18:00:00 GMT-0600 (MDT) 

Что я неправильно понимаю? Почему дата не Apr 10 2016? Как я могу сделать эту работу должным образом?

+0

try 'new Date (2016,4,10);' – BenG

+1

У вас есть дата * * полночь (0:00) от 10 апреля 2016 года? – Bergi

+0

Я получаю дату, отформатированную выше. Мне нужно, чтобы этот формат работал? Есть ли способ сделать это? – jhamm

ответ

9

Ваш часовой пояс GMT-6 (как показал GMT-0600 (MDT) в выводе, который вы предоставили). Поэтому дата, которая генерируется, смещается на -6 часов. В этом случае полночь минус 6 часов составляет 6 вечера в предыдущий день.

Если вы звоните date.toISOString(), вы увидите, что UTC - "2016-04-10T00:00:00.000Z", как ожидалось.

+0

«Как и ожидалось», только если вы знаете о несоответствиях синтаксического анализа даты в ECMAScript 2015. – RobG

Смежные вопросы