Преобразовать время известного часового пояса в местный часовой пояс в момент времени js - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь преобразовать время (только время) из известного часового пояса в мой местный часовой пояс с помощью Moment.js.

Я написал следующую функцию и получаю invalidDate в качестве вывода,

const convertToLocalTime = (time, tz) => {

  const t = moment.tz(time, tz)
  const localTime = t.local()
}
  • time - это просто время;без указания даты, например: 10:06 am и
  • tz - строка часового пояса, например: Europe/Berlin

Что я делаю не так?

1 Ответ

0 голосов
/ 03 марта 2019

См. Синтаксический анализ в Зоне :

Конструктор moment.tz принимает все те же аргументы, что и конструктор момента, но использует последний аргумент в качестве часового пояса .идентификатор .

Поскольку ваш ввод (10:06 am) не соответствует формату, признанному ISO 8601 / RFC 2822 (см. moment(String) документы), вы должны пройтиПараметр формата, как показано в moment(String, String).

Вот пример в реальном времени:

const convertToLocalTime = (time, tz) => {
  const t = moment.tz(time, 'hh:mm a', tz)
  const localTime = t.local()
  return localTime;
}

const res = convertToLocalTime("10:06 am", 'Europe/Berlin');
console.log( res.format('hh:mm a') );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.14/moment-timezone-with-data-2012-2022.min.js"></script>
...