Luxon конвертировать местное время в UTC с учетом часового пояса
Источник данных имеет поле даты-времени ISO-8601 без смещения.
Пример: 2019-07-09T18:45
Тем не менее, я знаю, что рассматриваемое время понимается как America/Chicago
часовой пояс.
Как я могу получить объект Luxon DateTime этого времени в UTC?
я могу сделать DateTime.fromISO('2019-07-09T18:45').plus({hours: 5})
... но это будет действовать только в течение полугода (как сейчас), когда наступает летнее время. В противном случае смещение будет .plus({hours: 6})
Есть ли в Luxon метод с учетом даты (и, следовательно, с учетом летнего времени) для преобразования из конкретного зонированного местного времени в UTC?
2 ответа
Поскольку вы знаете часовой пояс введенной вами даты, вы можете использовать zone
вариант при разборе. Как fromISO
Документы говорится:
public static fromISO(text: string, opts: Object): DateTime
opts.zone
: используйте эту зону, если в самой строке ввода не указано смещение.
Тогда вы можете использовать toUTC
конвертировать ваш DateTime в UTC:
"Установите" для зоны DateTime значение UTC. Возвращает вновь созданный DateTime.
Эквивалент setZone ('utc')
Вот живой пример:
const DateTime = luxon.DateTime;
const d = DateTime.fromISO('2019-07-09T18:45', {zone: 'America/Chicago'});
console.log(d.toISO());
console.log(d.toUTC().toISO());
<script src="https://cdn.jsdelivr.net/npm/luxon@1.16.0/build/global/luxon.js"></script>
Вы можете ссылаться на следующую функцию Luxon:
Чтобы проверить, основано ли текущее время на летнем времени или нет!
- toUTC: функция для преобразования времени в UTC
https://moment.github.io/luxon/docs/class/src/datetime.js~DateTime.html