Неправильная дата отображается в новой дате () в JavaScript

Это то, что я получаю в консоли Chrome. Я передаю "2016-09-05"(ГГГГ-ММ-ДД) в качестве даты, и она показывает мне 4,2016 сентября в качестве даты.

Другой конструктор показывает правильную дату

Передача через запятую требует токенизации + синтаксического анализа + индексации нулевого месяца, чего я хочу избежать

3 ответа

Если вы пропустите время в new Date(string) конструктор, время UTC предполагается. Таким образом, отображаемое значение на самом деле правильно. использование new Date('2016-09-05 00:00') создать объект даты по местному времени.

Вы можете использовать Решение от UTC Date Conversion. Какие основы делает следующее:

console.log(new Date("2014-12-23"));
console.log(convertDateToUTC(new Date("2014-12-23")));

function convertDateToUTC(date) { 
return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()); 
}

Вывод будет такой, как в консоли (для меня по крайней мере:D)

Вт 23 дек 2014 01:00:00 GMT+0100 (Mitteleuropäische Zeit)
Вт 23 дек 2014 00:00:00 GMT+0100 (Mitteleuropäische Zeit)

Использовать setFullYear синтаксис Date.setFullYear(год, месяц, день)

mydate = new Date();
mydate.setFullYear(2016, 08, 05);
Другие вопросы по тегам