Измените строку даты момента на правильный часовой пояс - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть дата со временем и часовой пояс.

Мне нужно это отформатировать определенным образом, поэтому я использую момент.

Скажите строку даты, которую я хочу вставитьis 2018-12-31 02:00:00.000 +00:00

Я преобразую его в определенный формат, выполнив следующие действия:

const properDate = moment(date, 'YYYY-MM-DD hh:mm:ss:ms')

Однако это предполагает, что дата указана в UTC, и я хочу, чтобы она была в Америке / НовойЧасовой пояс в Йорке, поэтому ожидаемая дата и время:

2018-12-30 21: 00: 00.000

Итак, мой вопрос, как мнедобавить в часовой пояс момент при преобразовании даты / времени в определенный формат?Я знаю, что это не так просто, как передать параметр.Это еще одна функция, которую я должен вызвать?

Я пытался

const properDate = moment(date, 'YYYY-MM-DD hh:mm:ss:ms').tz('America/New_York')

, но это тоже не сработало.

Редактировать: Я должен также упомянуть, что я тожеиспользуя moment-timezone.Просто кажется, что я не могу заставить его отформатировать так, как мне нужно, а также в нужном часовом поясе.

Так что, в принципе, я думаю, я мог бы сделать что-то вроде:

const momentDate = moment(date)
const properDate = momentDate.tz(timezone).format('YYYY-MM-DD hh:mm:ss:ms')

К сожалению, пока я пытаюсь его отформатировать, он тоже не будет работать.

1 Ответ

0 голосов
/ 11 декабря 2018

Используйте moment.tz для разбора строки времени с использованием заданного часового пояса (например, 'America/New_York'), а tz() для преобразования между зонами.

Здесьживой образец:

const date = '2018-12-30 21:00:00.000';
const properDate = moment.tz(date, 'YYYY-MM-DD hh:mm:ss.SSS', 'America/New_York')
console.log(properDate.format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data-2012-2022.min.js"></script>
...