Похоже, вы пытаетесь взять строку даты в формате UTC, преобразовать ее в локальную дату и время браузера клиента и отформатировать дату на основе локали.Вы можете немного задуматься над этим, так как JavaScript делает большую часть этого за вас, если вы правильно создаете объект Date
.
Не рекомендуется анализировать строки даты с помощью конструктора new Date()
, поэтомуВ приведенном ниже примере кода используется небольшое регулярное выражение и распаковка для разбора строки даты, затем вы можете создать дату в UTC с помощью new Date(Date.UTC(...))
.В этот момент JavaScript будет автоматически представлять объект даты в локальной дате и времени браузера клиента, затем вы можете использовать toLocaleString()
, чтобы применить форматирование для локали браузера клиента.Например:
const s = '2018-11-29T09:54:46.863207Z';
let [y, m, d, hh, mm, ss, ms] = s.match(/\d+/g);
let date = new Date(Date.UTC(y, m - 1, d, hh, mm, ss, ms));
let formatted = date.toLocaleString();
console.log(formatted);