javascript - 在 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 小时格式显示,这是什么原因呢?
解决方案
此函数返回一个字符串值。String 的内容是实现定义的,但旨在以一种方便的、人类可读的形式表示当前时区中 Date 的“时间”部分,该形式对应于宿主环境当前语言环境的约定。
实现定义的工具是将其定义推迟到外部源而无需进一步限定的工具。本规范不对特定行为提出任何建议,符合要求的实现可以在本规范提出的约束范围内自由选择任何行为。
因此,浏览器可以自由地实现他们认为合适的这个特性。
推荐阅读
- android - kotlin 在 Android 8 上隐藏软键盘
- angular - Angular - 带有自定义验证器的无效选择类型
- c++ - 使用 Clion 和 SFML 设置项目有效,但只是第一次
- docker - 您如何查看在 gitlab-runner exec 期间创建的日志?
- python - 计数功能如何计数?
- javascript - 更改组合图表中填充区域的不透明度(谷歌图表)
- c# - 您可以在 Razor Pages 中提交 AJAX POST 并更新绑定集合,还是必须返回 JSON 并以这种方式填充表?
- swift - 获取数据时不更新 UICollectionView
- javascript - 通过用鼠标旋转一个圆圈来平移一个平面
- sas - 使用do循环删除数据步骤中的缺失数据