Когда вы «выводите» объект Date
через console.log()
, alert()
и т. Д., По умолчанию используется метод toString()
, преобразующий объект даты в строку локального часового пояса для отображения (именно поэтому вывидеть вашу дату по вашему местному времени).
Анализ строк даты с конструктором Date
не рекомендуется (хотя, я подозреваю, что большинство браузеров, вероятно, обрабатывают даты ISO 8601, как и в вашем вопросе, довольно хорошо) - см. Примечание параметра dateString здесь .Итак, если вам нужно создать объект даты, а также вывести строку даты, то вы можете проанализировать строку ISO 8601 с split()
, используя набор символов регулярного выражения для нескольких разделителей, а затем с помощью new Date(Date.UTC(...))
создать объект даты UTC.Вы также можете сделать это с помощью момента.js, но ниже следует проиллюстрировать происходящее более подробно.
Например:
const text = '2018-11-15T11:13:26.687Z'
const [y, m, d, hh, mm, ss, ms] = text.split(/[-T:.Z]/);
const date = new Date(Date.UTC(y, m - 1, d, hh, mm, ss, ms));
console.log(date.toLocaleString()); // date string in local timezone
console.log(date.toUTCString()); // UTC date string
console.log(JSON.stringify(date)); // ISO 8601 date string in most browsers