Я пытаюсь преобразовать java момент времени-даты в формат чч: мм, используя момент js
moment("2020-03-21T17:34:00Z").utcOffset(-0500).format("hh:mm")
, это должно дать мне 12:34, но как-то это дает "12:14 "который является неподходящим временем.
Несколько вещей:
Функция utcOffset ведет себя по-разному, независимо от того, передаете ли вы строку или число. Как число, это ожидается в терминах минут. Поскольку у вас есть часы и минуты в вашем смещении, вы должны передать его в виде строки: .utcOffset("-0500")
utcOffset
.utcOffset("-0500")
Строки формата чувствительны к регистру. Вы должны использовать HH:mm (24-часовое время) или hh:mm a (12-часовое время). Поскольку вы использовали hh:mm без a, что-либо после 12 часов будет искажено.
HH:mm
hh:mm a
hh:mm
a
Вы задаете фиксированное смещение. Если это ваше намерение, тогда хорошо. Но признайте, что есть разница между смещением и часовым поясом. (См. «Часовой пояс! = Смещение» в тэге часового пояса вики .) Например, если вы хотите преобразовать в восточное время США, вы должны использовать .tz('America/New_York) вместо .utcOffset("-0500"). (Восточное время США составляет -4 для указанной даты, а не -5.) Вам потребуется аддон момент-часовой пояс, чтобы сделать эту работу.
.tz('America/New_York
Наконец, признайте, что момент находится в Режим технического обслуживания. На данный момент команда обычно рекомендует Luxon для новой разработки.
Метод момента js .utcOffset() принимает смещение в минутах.
.utcOffset()
, поэтому, если вы хотите получить 12:34, вам нужно использовать -300 вместо -0500
12:34
-300
-0500
moment("2020-03-21T17:34:00Z").utcOffset(-300).format("hh:mm")