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

问题描述 投票:0回答:1

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

 Intl.DateTimeFormat().resolved.timeZone

返回“欧洲/伦敦”

在 Firefox 中,此返回

undefined
,即使 Firefox 支持 Intl

如何使用 Firefox 获取时区?

javascript firefox internationalization timezone ecmascript-intl
1个回答
36
投票

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

Intl.DateTimeFormat().resolvedOptions().timeZone

不幸的是,目前并非所有实现都支持

Intl
API 的时区功能。因此,虽然这将在 Chrome 中返回有效的 IANA 时区,但在 FireFox 和其他几个浏览器中还无法执行此操作。

kangax Intl 兼容性表将此功能显示为标记为

DateTimeFormat
resolvedOptions().timeZone defaults to the host environment
对象下的子项。

请参阅以下 FireFox 工作项:

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

请注意,在尝试其他猜测算法之前,这两个方法都会在内部尝试使用

Intl
API(如果可用且正常运行)。

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

© www.soinside.com 2019 - 2024. All rights reserved.