Преобразование UTC в местное время страны

Я пытаюсь преобразовать время UTC, которое у меня есть в моей базе данных, в определенное время в местной стране. Я просматриваю разные библиотеки: luxon Day.js и т. д. Я хочу получить местное время в Германии, если у меня есть время UTC. У меня есть страна пользователя в моих записях. Если время UTC 10:00, то местное время в Германии должно быть 11:00. Вот что я пробовал, чтобы протестировать библиотеку luxon:

const { DateTime } = require("luxon");

const date = new Date(Date.UTC(2020, 12, 9, 10, 0, 0));
let ge_date = DateTime.fromJSDate(date, { locale: "ge" });
ge_date.setZone("Europe/Berlin");
console.log(ge_date);

но, похоже, это не работает.


person Lexx    schedule 09.12.2020    source источник
comment
Вас может заинтересовать этот ответ: stackoverflow.com/a/47808440/11283219. Это решение дает вам возможность использовать собственные .toLocaleDateString()   -  person Maksymilian Tomczyk    schedule 09.12.2020
comment
// это должно работать как встроенная функция // получение локальной даты и времени const dt = new Date().toLocaleString(); // получение только локальной даты const d = new Date().toLocaleDateString(); // получение только местного времени const t = new Date().toLocaleTimeString(); просто введите дату в new Date(hereYourDBdate)   -  person TradeCoder    schedule 09.12.2020


Ответы (1)


setZone() возвращает вновь созданный DateTime, но не меняет исходную переменную. Лучшим решением было бы связать .setZone() после вашей функции .fromJSDate().

let ge_date = DateTime.fromJSDate(date, { locale: "ge" }).setZone("Europe/Berlin");
console.log(ge_date.toString());
person jndnzl    schedule 09.12.2020