Node JS Error: Moment Timezone has no data for 2018-08-08T10:00:00

Node JS Error: Moment Timezone has no data for 2018-08-08T10:00:00

我正在尝试初始化 los_angles 时区的时间。但它抛出以下错误:

Moment Timezone has no data for 2018-08-08T10:00:00

以下是我的代码:

moment().tz("2018-08-08T10:00:00","YYYY-MM-DDTHH:mm:ss",true,"America/Los_Angeles").format("YYYY-MM-DDTHH:mm:ss");

你能试试这个吗:

moment.tz("2018-08-08T10:00:00","YYYY-MM-DDTHH:mm:ss",true,"America/Los_Angeles").format("YYYY-MM-DDTHH:mm:ss");

您应该从 moment().tz(..) 中删除 moment 处的 ()。正确的是moment.tz(..),如

moment.tz("2018-08-08T10:00:00","YYYY-MM-DDTHH:mm:ss",true,"America/Los_Angeles").format("YYYY-MM-DDTHH:mm:ss");

它给了我结果

"2018-08-08T10:00:00"

参考: http://momentjs.com/timezone/

我得到了一个非常相似的错误(Moment Timezone has no data for 1624031790031)并通过 3 个步骤解决了它:

  1. 导入“moment-timezone”,而不是“moment”。

const momentTimezone = require("moment-timezone");

  1. 加载时刻时区数据。

您一次可以添加一个时区:

momentTimezone.tz.add('America/Los_Angeles|PST PDT|80 70|0101|1Lzm0 1zb0 Op0');

或者您可以将它们添加为数组:

momentTimezone.tz.add([
"America/Los_Angeles|PST PDT|80 70|0101|1Lzm0 1zb0 Op0",
"America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3"
]);

我将以下时区数据的缩写版本(仅我需要的时区)保存到 JSON 文件中

https://github.com/moment/moment-timezone/blob/develop/data/packed/latest.json

然后将这些时区添加到 moment-timezone:

const momentTimezoneData = require("../utils/momentTimezoneData"); momentTimezone.tz.add(momentTimezoneData.zones);

  1. 确保您的时区是您加载的时区。显然我们的时区没有;它是一个 unix 时间戳 1624031790031。将其设为时区之一(例如“America/Chicago”)后,我们在上面的 #2 中加载了它,一切正常。
const timeInTheZone = momentTimezone
  .tz("2021-06-24T04:34:36.380Z", "America/Chicago")
  .format('YYYY-MM-DD HH:mm');