Анализировать временную метку UTC как местное время, игнорируя часовой пояс - PullRequest
0 голосов
/ 05 июня 2019

Я получил некоторые даты в формате UTC.

Эти даты на самом деле являются временными метками событий, происходящих локально по всему миру в местном времени пользователя, а не в реальном времени UTC.(Это было сделано из-за ограничений MongoDB по хранению местного времени)

На веб-интерфейсе я хочу использовать эти поля без преобразования их в местное время браузера.

Строка даты, полученная отбэкэнд выглядит так:

2018-10-09T18:02:25.000Z

Создание объекта даты преобразует его в местное время браузера:

const date = new Date("2018-10-09T18:02:25.000Z")
console.log(date.getHours()) // Prints 20 since Im in +2 timezone

Я хочу, чтобы он игнорировал информацию о часовом поясе Зулу.Я мог бы удалить Z следующим образом:

function toDateIgnoreUTC(dateString) {
    return new Date(dateString.replace("Z", ""));
}

const date2  = toDateIgnoreUTC("2018-10-09T18:02:25.000Z")
date2.getHours() // Prints 18 which is what I want

Интересно, есть ли лучший способ заставить объект даты игнорировать информацию о часовом поясе и не преобразовывать ее в местное время браузера.

1 Ответ

4 голосов
/ 05 июня 2019

Я буду второй озабоченность децезе тем, что вы меняете значение метки времени.Но, отвечая на вопрос, который вы задали:

Способ, которым вы делаете это (удаляя Z), равен для спецификации .Строка даты / времени в этом формате без информации о часовом поясе анализируется как местное время. Однако , помните, что движок Apple от Apple ошибается , что влияет на Safari (конечно), но также и на все текущие браузеры iOS (поскольку в настоящее время они вынуждены использовать движок JavaScript от Apple, а несвой собственный).

Чтобы решить эту проблему, вы всегда можете разобрать его самостоятельно (этот формат довольно прост) и использовать конструктор new Date(year, monthMinusOne, day, hours, minutes, seconds).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...