0

我正在尝试使用 Moment.js 将时间(单独时间)从已知时区转换为我的本地时区。

我编写了以下函数,并且得到invalidDate了输出。

const convertToLocalTime = (time, tz) => {

  const t = moment.tz(time, tz)
  const localTime = t.local()
}
  • time只是时间;没有任何日期,例如:10:06 am和,
  • tz是一个时区字符串,例如:Europe/Berlin

我究竟做错了什么?

4

1 回答 1

1

请参阅区域中的解析

构造函数采用与时刻构造函数相同的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>

于 2019-03-03T19:27:21.477 回答