返回时区名称与时刻的猜测()



我想使用 Moment 的 guess() 函数返回时区大陆(或国家)和城市,如他们的例子所示:

moment.tz.guess(); // America/Chicago

但上述方法不起作用。返回值是 CET ,这是另一回事。它是中欧时间的缩写,即没有大陆国家,没有城市。

如何使用guess()函数返回"欧洲/斯德哥尔摩"、"美国/芝加哥"等?

当主机环境(浏览器等)实现 ECMA-402 的 API 但在结果中返回错误的时区类型时,会发生这种情况。 如果您在 Moment 中看到了这一点,您可能也可以在没有 Moment 的情况下获得以下结果:

Intl.DateTimeFormat().resolvedOptions().timeZone

目前,Moment假设如果此API存在,则它要么提供有效的IANA时区标识符,要么返回undefined 。 但是,如您所指出的,某些环境会返回类似CET的内容。

忽略错误结果已记录为时刻/时刻时区#423 中的功能请求。 在这种特殊情况下,环境是Android设备上较旧的Chrome浏览器。

我知道

我已经很晚了,但我正在寻找同一问题的答案。对于其他寻找相同答案的人,使用以下方法应该有效:

moment.tz.guess()

作为参考,我同时使用带有语言环境的时刻.js和带有数据的时刻时区.js,并且仅使用简单的moment.tz.guess()将为我返回完整的时区名称,即:America/DenverAmerica/New_York 等。

根据 momentjs 库文档,你可以这样做:

moment.tz([2012, 0], 'America/New_York').zoneAbbr(); // would return "EST"

以下是参考:https://momentjs.com/timezone/docs/#/using-timezones/formatting/

尝试使用moment.format('Z'),你会得到-05:00什么的。然后根据预定义的映射将其映射到CET或您正在使用的任何内容。

相关内容

  • 没有找到相关文章

最新更新