首页 > 解决方案 > 在 Chrome 和 Safari 中不带参数的 toLocaleTimeString() 行为

问题描述

我在 MDN 文档中读到:

不带参数的 toLocaleTimeString() 取决于实现、默认语言环境和默认时区

这到底是什么意思?

我在 Chrome(版本 87.0.4280.88)和 Safari 浏览器(版本 14.0)中都尝试了以下代码。

new Date().toLocaleTimeString()

在 Chrome 中,它给出的输出为

16:57:37

而在 Safari 中,它给出的输出为

4:57:37 PM

关于上面的例子,有人可以解释实现是如何从一个浏览器到另一个浏览器的,为什么会这样?

编辑:所有这些都是使用 MAC 完成的,我尝试在设置 - >“语言和地区”下将首选语言更改为英语(美国),之前它是英语(印度),一旦我进行了更改并重新启动 chrome,结果就变成了。

4:57:37 PM

但是对于没有进行此更改的 Safari,它能够以 12 小时格式显示,这是什么原因呢?

标签: javascript

解决方案


状态规范toLocaleTimeString

此函数返回一个字符串值。String 的内容是实现定义的,但旨在以一种方便的、人类可读的形式表示当前时区中 Date 的“时间”部分,该形式对应于宿主环境当前语言环境的约定。

实现定义的定义为:

实现定义的工具是将其定义推迟到外部源而无需进一步限定的工具。本规范不对特定行为提出任何建议,符合要求的实现可以在本规范提出的约束范围内自由选择任何行为。

因此,浏览器可以自由地实现他们认为合适的这个特性。


推荐阅读