14

我正在使用国际 API。在 Chrome 中:

 Intl.DateTimeFormat().resolved.timeZone

返回“欧洲/伦敦”

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

如何使用 Firefox 获取时区?

4

1 回答 1

27

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

Intl.DateTimeFormat().resolvedOptions().timeZone

Intl不幸的是,目前并非所有实现都支持API的时区功能。因此,虽然这将在 Chrome 中返回一个有效的 IANA 时区,但在 FireFox 和其他几个浏览器中还不会这样做。

kangax Intl 兼容性表DateTimeFormat将此功能显示为标记为的对象下的子项resolvedOptions().timeZone defaults to the host environment

请参阅以下 FireFox 工作项:

与此同时,有两种可行的选择:

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

另请注意,最佳实践是永远不要仅仅依赖时区检测/猜测,而是使用它从时区选择器控件中选择合理的默认值。总是给用户一些方法来选择他们想要的时区。这很重要,因为他们目前将计算机设置为的时区可能是也可能不是他们希望在您的应用程序中使用的时区。例如,基于 Web 的日历软件(例如 Google 日历或 Outlook.com)通常允许用户在其用户配置文件中设置时区。

于 2016-06-13T20:48:50.863 回答