Luxon конвертировать местное время в UTC с учетом часового пояса - PullRequest
0 голосов
/ 08 июля 2019

Источник данных имеет поле даты-времени 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 ]

1 голос
/ 08 июля 2019

Поскольку вы знаете часовой пояс введенной вами даты, вы можете использовать опцию 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>
0 голосов
/ 08 июля 2019

Можно использовать следующую функцию luxon:

  1. isInDST https://moment.github.io/luxon/docs/class/src/datetime.js~DateTime.html#instance-get-isInDST

Чтобы проверить, основано ли текущее время на летнем времени или нет!

toUTC: функция для преобразования времени в UTC

https://moment.github.io/luxon/docs/class/src/datetime.js~DateTime.html#instance-method-toUTC

...