使用Intl API获取时区在Firefox中不起作用:

mik*_*ana 10 javascript firefox timezone internationalization ecmascript-intl

我正在使用Intl API.在Chrome中:

 Intl.DateTimeFormat().resolved.timeZone
Run Code Online (Sandbox Code Playgroud)

返回"欧洲/伦敦"

在Firefox中undefined,即使Firefox支持Intl,也会返回.

如何获得Firefox的时区?

Mat*_*int 17

从技术上讲,更正确的咒语是:

Intl.DateTimeFormat().resolvedOptions().timeZone
Run Code Online (Sandbox Code Playgroud)

不幸的是,并非所有实现当前都支持IntlAPI 的时区功能.因此,虽然这将在Chrome中返回有效的IANA时区,但在FireFox和其他几种浏览器中也不会这样做.

所述kangax国际兼容性表示出该特征为下一个分项DateTimeFormat标记的对象resolvedOptions().timeZone defaults to the host environment.

请参阅以下FireFox工作项:

与此同时,有两种可行的替代方案:

请注意Intl,在尝试其他猜测算法之前,如果API可用并且正常运行,它们都会在内部尝试使用API.

另请注意,最佳做法是永远不要仅仅依靠时区检测/猜测,而是使用它从时区选择器控件中选择合理的默认值.始终为用户提供一些选择所需时区的方法.这很重要,因为他们目前将计算机设置为的时区可能是也可能不是他们想要在您的应用程序中使用的时区.例如,基于网络的日历软件(例如Google日历或Outlook.com)通常允许用户在其用户个人资料中设置时区.