Момент js показывает неправильное время при форматировании - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь преобразовать java момент времени-даты в формат чч: мм, используя момент js

moment("2020-03-21T17:34:00Z").utcOffset(-0500).format("hh:mm")

, это должно дать мне 12:34, но как-то это дает "12:14 "который является неподходящим временем.

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Несколько вещей:

  • Функция utcOffset ведет себя по-разному, независимо от того, передаете ли вы строку или число. Как число, это ожидается в терминах минут. Поскольку у вас есть часы и минуты в вашем смещении, вы должны передать его в виде строки: .utcOffset("-0500")

  • Строки формата чувствительны к регистру. Вы должны использовать HH:mm (24-часовое время) или hh:mm a (12-часовое время). Поскольку вы использовали hh:mm без a, что-либо после 12 часов будет искажено.

  • Вы задаете фиксированное смещение. Если это ваше намерение, тогда хорошо. Но признайте, что есть разница между смещением и часовым поясом. (См. «Часовой пояс! = Смещение» в тэге часового пояса вики .) Например, если вы хотите преобразовать в восточное время США, вы должны использовать .tz('America/New_York) вместо .utcOffset("-0500"). (Восточное время США составляет -4 для указанной даты, а не -5.) Вам потребуется аддон момент-часовой пояс, чтобы сделать эту работу.

  • Наконец, признайте, что момент находится в Режим технического обслуживания. На данный момент команда обычно рекомендует Luxon для новой разработки.

1 голос
/ 16 марта 2020

Метод момента js .utcOffset() принимает смещение в минутах.

, поэтому, если вы хотите получить 12:34, вам нужно использовать -300 вместо -0500

moment("2020-03-21T17:34:00Z").utcOffset(-300).format("hh:mm")
...