【问题标题】:How does toLocaleDateString() work in Chrome?toLocaleDateString() 如何在 Chrome 中工作?
【发布时间】:2013-02-12 15:24:34
【问题描述】:

我了解 toLocaleDateString() 使用计算机设置的 javascript 方法。

让我们以the W3Schools example 为例: 当我更改计算机的日期和小时格式时,Firefox 或 IE 中的结果不同(如预期的那样),但 Chrome 仍然显示相同的日期格式,为什么?

【问题讨论】:

标签: javascript google-chrome date


【解决方案1】:

来自MDN

“具体格式取决于平台、区域设置和用户设置。”

还有,

“您不应该在依赖特定格式或语言环境的环境中使用此方法。”

基本上,“为什么” 是因为 Chrome 就是这样做的。如果您需要特定格式,则必须自己指定。

【讨论】:

  • 好的,谢谢 :) 那么,例如,在 js 中为英语或法语用户以不同方式显示日期的正确方法应该是什么?
  • 最可靠的选择是获取日期/时间等,并构建一个类似year + '/' + month + '/' + day + ' ' + hour + ':' + minute + ':' + second;的字符串
【解决方案2】:

来自EMCAScript 5 standard

15.9.5.6 Date.prototype.toLocaleDateString()

此函数返回一个字符串值。 String 的内容是依赖于实现的,但旨在以符合宿主环境的当前语言环境。

Chrome 可以用它喜欢的任何方式将日期表示为区域设置日期字符串。该标准仅提供指南;它没有规定特定的格式。而且,事实上,结果不仅会在浏览器之间有所不同,而且在 Chrome 本身内也会有所不同,具体取决于您的区域设置。

【讨论】:

    【解决方案3】:

    Chrome 似乎不使用 Windows 区域设置,而是使用自己的设置。这些可通过设置 > 高级设置 > 语言获得。但是日期格式没有明确定义,它是从语言+国家选择推断出来的,例如:

    • 英语(美国)将日期格式设置为 mm/dd/yyyy
    • 英语(英国)将日期格式设置为 dd/mm/yyyy

    (对于任何尝试更改这些设置的人,请不要忘记 - 就像我一样 - 重新启动 Chrome 以使设置生效)

    回到最初的问题,看起来使用toLocaleDateString() 是合法的,只要想法是以人类用户理解的格式呈现信息。但这将是一个理想的世界,每个用户都正确配置了他/她的浏览器。相反,只要人们将 Chrome 设置为英语,Chrome 就会默认设置为英语(美国),并且需要一些谷歌搜索(大多数用户不会这样做)来更改这些设置。

    这使得使用toLocaleDateString() 有风险,即使在不“依赖特定格式或语言环境”的情况下也是如此。看起来任何跨浏览器 Web 应用程序的唯一“严肃”选项是管理其自己的日期格式首选项(当然,每个用户......)

    【讨论】:

      猜你喜欢
      • 2011-12-21
      • 1970-01-01
      • 2017-11-30
      • 2020-06-12
      • 2014-10-29
      • 2010-10-11
      • 1970-01-01
      • 2016-05-22
      相关资源
      最近更新 更多