Раньше у меня был этот вопрос несколько лет назад, и причина действительно проста. Это из-за символа 'Z' в конце значения даты, потому что для функции .toLocaleDateString () (учитывая, что вы не указали параметры, здесь больше info ) подразумевается, что это значение лежит взона UTC + 0 и по какой-то причине, которая всегда однажды бросает вам голову.
Решение: Чтобы решить эту проблему, у вас есть много вариантов, но, возможно, самый простой - этоотформатируйте дату самостоятельно следующим образом:
function lz(n){return n<10 ? '0'+n : n}
var d = new Date('2019-01-01T00:00:00Z');
var formatted = d.getUTCFullYear()+'-'
+ lz(d.getUTCMonth()+1)+'-'
+ lz(d.getUTCDate())+' '
+ lz(d.getUTCHours())+':'
+ lz(d.getUTCMinutes())+':'
+ lz(d.getUTCSeconds());
Или вы можете использовать сторонние библиотеки, такие как moment.js , что, кстати, довольно популярно. Вот ссылка для получения дополнительной информации.
Редактировать:
Мои извинения Я пропустил одну часть своего кода, поскольку взял его непосредственно уодин из моих проектов. Пожалуйста, следуйте приведенному выше коду или протестируйте его в этой скрипке .