Luxon: как не учитывать часовой пояс на конкретную дату - PullRequest
2 голосов
/ 04 июня 2019

Я хочу сгенерировать дату Luxon без учета Settings.defaultZone.

В моем случае я получил строку даты из стороннего компонента выбора даты.Формат выглядит следующим образом:

2019-06-28T00:00:00

Теперь, однако, мы используем Luxon во всех наших приложениях для управления датами, поэтому мне нужно проанализировать эту дату, чтобы сгенерировать Luxon.

поэтому я анализирую строку следующим образом:

import { DateTime } from 'luxon';
function parseDate(dateString) { // Let's say dateString === 2019-06-28T00:00:00

  const formattedDate = DateTime.fromISO(value); // 2019-06-27T23:00:00.000Z
 ...
}

Как видите, на formattedDate влияет текущий часовой пояс.В этом конкретном случае в начальной загрузке приложения мы устанавливаем общий часовой пояс GMT + 1.

Поэтому для форматированной даты установлено значение 27 июня в 23:00 вместо 28 июня в 00:00 - дата, которую пользователь выбирает в указателе даты.Глобальная настройка часового пояса подстраивается под время.

Это, как правило, замечательно, но в данном конкретном случае (пользователь выбирает дату истечения срока действия своей идентификационной карты) нам не нужно и не нужно принимать часовые пояса вучетная запись.Я хотел бы, чтобы дата была установлена ​​на 28 июня с часовым поясом utc.

Я пробовал это:

const formattedValue = DateTime.fromISO(value).setZone('utc');

Однако это не меняет дату ион установлен на 27 июня.

Я думаю, что есть простой способ добиться этого, только я не могу его найти.

1 Ответ

2 голосов
/ 04 июня 2019

Я был очень близко:

const formattedValue = DateTime.fromISO(value, {zone: 'utc'});

Делает трюк.

...