Fel*_*ger 1 javascript timezone momentjs
我想使用Moment的guess()函数返回时区大陆(或国家)和城市,如其示例所示:
moment.tz.guess(); // America/Chicago
Run Code Online (Sandbox Code Playgroud)
但是以上方法不起作用。返回的值为CET,这是其他值。这是中欧时间的缩写,即没有大陆国家,没有城市。
如何使用该guess()函数返回“欧洲/斯德哥尔摩”,“美国/芝加哥”等?
当主机环境(浏览器等)为ECMA-402实现API但在结果中返回错误的时区类型时,就会发生这种情况。如果您使用Moment看到了这一点,那么在没有Moment的情况下,也可以通过以下方法获得此结果:
Intl.DateTimeFormat().resolvedOptions().timeZone
Run Code Online (Sandbox Code Playgroud)
目前,Moment假定如果该API存在,则它提供有效的IANA时区标识符或返回undefined。但是,某些环境会返回CET您所指出的内容。
忽略不良结果已在moment / moment-timezone#423中记录为功能请求。在这种情况下,环境是Android设备上的旧版Chrome浏览器。
根据 momentjs 库文档,你可以这样做:
moment.tz([2012, 0], 'America/New_York').zoneAbbr(); // would return "EST"
Run Code Online (Sandbox Code Playgroud)
这是参考: https://momentjs.com/timezone/docs/#/using-timezones/formatting/