首页 > 解决方案 > Javascript Date.ToLocaleTimeString() 与计算机的时间格式不匹配

问题描述

我的电脑被定义为使用 24 小时格式:

在此处输入图像描述

但是,当我使用var date = new Date("10/25/2020 19:32") 然后date.toLocaleTimeString()

我得到一个 12 小时格式: 在此处输入图像描述

标签: javascriptgoogle-chromedatetime

解决方案


当没有提供选项时,toLocaleString的输出完全依赖于实现,因此可能会或可能不会使用主机设置,但是他们几乎可以肯定地将其视为等同于没有选项的“默认”语言,即

new Date().toLocaleString('default') === new Date().toLocaleString()

在我测试的每个浏览器中都返回 true。重要的部分是:

[toLocaleString 旨在以一种方便的、人类可读的形式表示当前时区中的日期,该形式与宿主环境当前语言环境的约定相对应。

请注意,它应该使用区域设置(即地点或地区)的约定,而不是主机系统。

当提供语言和/或选项时,输出由 ECMA-402 管理,主要基于作为第一个参数提供的语言代码(误命名为“语言环境”)。选项也会影响输出,但是除了获取在第一个参数为“默认”的情况下要使用的语言代码之外,不使用主机设置。

toLocale方法的基本原理是可以从语言和其他相当模糊的选项中确定适当的格式。然后实现开发人员计算出每种语言和选项组合使用的格式。显然,当提供语言或选项时,不能使用主机系统设置,因为这违背了该功能的全部目的。


推荐阅读