как импортировать временную метку UTC в Luxon как есть? (Миграция из момента)

У меня есть эта строка в моем приложении:

const createdOn: moment.Moment = moment.utc(created_on)

created_on исходит из конечной точки API, как в этом формате:

{ 
  ...,
  created_on: "2019-03-08T15:32:26.285Z",
}

Это в основном импортирует created_on как часовой пояс UTC. created_on тоже UTC. Таким образом, этот метод не нарушает часовой пояс и правильно импортирует UTC. Еще у меня есть такой:

Это генерирует текущую временную метку в часовом поясе UTC.

moment.utc()

Обратите внимание. Если я просто импортирую дату в момент времени, а затем преобразую ее в формат UTC, мое время пойдет не так. Момент по умолчанию предполагает, что данная дата равна часовому поясу текущего посетителя. Мне нужно импортировать время как есть. Что UTC все время.

Что эквивалентно Luxon?


person Dennis    schedule 28.11.2019    source источник


Ответы (1)


Вы можете использовать DateTime.utc и вы можете ознакомиться с разделом Для пользователей Moment Руководство Люксона.

Вы можете найти в разделе Creation:

Operation           | Moment            | Luxon                   | Notes
------------------------------------------------------------------------------------
From UTC civil time | moment.utc(Array) | DateTime.utc(Number...) | Moment also uses moment.utc() to take other arguments. In Luxon, use the appropriate method and pass in the { zone: 'utc'} option

Итак, если ваш ввод представляет собой строку, вы можете использовать метод from (например, fromISO), используя параметр {zone: 'utc'}

Вот живой образец:

const DateTime = luxon.DateTime;
const nowLuxon = DateTime.utc();
console.log(nowLuxon.toISO(), nowLuxon.toMillis());

const nowMoment = moment.utc();
console.log(nowMoment.format(), nowLuxon.valueOf());

const created_on = "2019-03-08T15:32:26.285Z";
const createdOnLuxon = DateTime.fromISO(created_on, { zone: 'utc'});
console.log(createdOnLuxon.toISO(), createdOnLuxon.toMillis());

const createdOnMoment = moment.utc(created_on);
console.log(createdOnMoment.format(), createdOnMoment.valueOf());
<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/global/luxon.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

person VincenzoC    schedule 28.11.2019
comment
Но моя переменная created_on — это строка, исходящая из конечной точки API. utc() кажется, что принимает только массив или объекты, но не строку. - person Dennis; 28.11.2019
comment
@Pratha, как указано в цитате из документа: В Luxon используйте соответствующий метод и передайте параметр { zone: 'utc'}, в любом случае, если вы предоставите образец значения для created_on, я могу обновить свой фрагмент . - person VincenzoC; 28.11.2019
comment
@Pratha Я отредактировал ответ, включая образец строки. - person VincenzoC; 28.11.2019