我想使用Moment's guess() function返回时区大陆(或国家/地区)和城市,例如:
moment.tz.guess(); // America/Chicago
但上述情况并不奏效。返回值为CET
,这是其他内容。它是中欧时代的缩写,即没有大陆国家,没有城市。
如何使用guess()
功能返回欧洲/斯德哥尔摩'美国/芝加哥'等?
答案 0 :(得分:3)
当主机环境(浏览器等)实现ECMA-402的API但在结果中返回错误类型的时区时,会发生这种情况。如果你在Moment中看到这个,你可能也会在没有Moment的情况下得到这个结果:
Intl.DateTimeFormat().resolvedOptions().timeZone
目前,Moment假设如果此API存在,则它提供有效的IANA时区标识符或返回undefined
。但是,某些环境会像您指出的那样返回CET
之类的内容。
忽略不良结果已在moment/moment-timezone#423中记录为功能请求。在这种特殊情况下,环境是Android设备上较旧的Chrome浏览器。
答案 1 :(得分:0)
根据momentjs库文档,您可以这样做:
moment.tz([2012, 0], 'America/New_York').zoneAbbr(); // would return "EST"
这是参考: https://momentjs.com/timezone/docs/#/using-timezones/formatting/
答案 2 :(得分:0)
我知道我对此很迟,但是我正在寻找相同问题的答案。对于寻找相同答案的其他人,使用以下方法应该有效:
moment.tz.guess()
作为参考,我同时使用moment-with-locales.js和moment-timezone-with-data.js,仅使用简单的moment.tz.guess()
就会为我返回完整的时区名称,即:America/Denver
或America/New_York
等
答案 3 :(得分:0)
尝试使用moment.format('Z')
,您将获得-05:00
之类的东西。然后根据预定义的映射将其映射到CET或您正在使用的任何内容。