Javascript Luxon GMT время для локали

У меня есть отметка времени из моей базы данных в зоне gmt. Как я могу отобразить время в зависимости от часового пояса пользователя? В настоящее время я получаю время, как это

return luxon.DateTime.fromSQL(created_at).setZone('local');

Возвращает время в гтм.

2 ответа

Решение

Более простой способ справиться с этим - просто сказать парсеру, что время выражено в GMT:

DateTime.fromSQL(current_time, {zone: "utc"}).toLocal()

Чтобы объяснить это немного подробнее, то, что происходит в вашем оригинале, заключается в том, что временная строка должна интерпретироваться как время по Гринвичу, но Luxon этого не знает. Таким образом, она интерпретирует строку как местное время, которое отличается от времени, которое вы подразумевали под смещением. Но если Luxon знает, что "это выражено в GMT", то в первую очередь он получит правильное время.

Проблема решена с помощью этого метода:

let offset = - (new Date().getTimezoneOffset() / 60);
return luxon.DateTime.fromSQL(created_at).plus({hours: offset}).toLocaleString(luxon.DateTime.TIME_SIMPLE)
Другие вопросы по тегам