Неверное преобразование времени в моменты - PullRequest
1 голос
/ 14 марта 2019

Я пытаюсь использовать моменты для извлечения и выполнения некоторых вычислений времени в машинописи, но ...

Я получаю неверное значение для времени как 11: 51 PM

Я должен получить 4:51 вечера.

const m = moment('2019-03-13T16:51-07:00');
console.log(m.format('LT'));

1 Ответ

1 голос
/ 14 марта 2019

Это ожидается, потому что ввод строки даты и времени, который вы передаете функции момента, имеет смещение часового пояса. Момент преобразует введенную дату-время в местную дату-время на основе смещения часового пояса. Если вы хотите игнорировать (или, скорее, сохранить) смещение часового пояса и получить точную дату-время независимо от часового пояса браузера, вы можете использовать метод moment.parseZone .

Функции разбора строки Moment, такие как moment (string) и moment.utc (string), принимают информацию о смещении, если она предоставлена, но преобразуют полученный объект Moment в локальное или UTC время. Напротив, moment.parseZone () анализирует строку, но сохраняет полученный объект Moment в часовом поясе с фиксированным смещением с предоставленным смещением в строке.

 const m = moment.parseZone(ISODateTimeString);
 console.log(m.format('LT')); //"03/13/2019 4:51 PM" for en-US locale

// or you can also use

 const m = moment(ISODateTimeString).utcOffset(ISODateTimeString);
...