2016-04-27 2 views
0
var dateTest = new Date('2015-03-31'); 
console.log(dateTest); 

Результат:Почему дата устанавливается на день раньше, чем ожидалось?

пн 30 марта 2015 20:00:00 GMT-0400 (по восточному поясному времени)

Однако я ожидал, что это будет 31 марта Как я могу это сделать ?

+2

Требуется дата, когда вы передаете его как UTC, а затем примените ваш местный модификатор UTC, который равен -4, поэтому 2015-03-31 00 - 4h = 2015-03-30 20 –

+0

** GMT-0400 ** .... – Oriol

ответ

2

Потому что он устанавливает дату в соответствии с UTC и возвращает ее с вашим местным смещением часового пояса. Я бы рекомендовал явно указать смещение часового пояса, если это то, что вам нужно, или добавление смещения часового пояса после факта.

var d = new Date('2015-03-31T00:00:00-0400'); 

// or 

var d = new Date('2015-03-31'); 
d.setMinutes(d.getMinutes() + d.getTimezoneOffset()); 

Если вы хотите это, чтобы быть в UTC, вы можете вызвать метод toUTCString() на нем вместо этого, который даст вам дату вы ожидаете, хотя и не в вашем часовом поясе.

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