【问题标题】:toLocaleDateString time formatting issue (Firefox vs. Chrome)toLocaleDateString 时间格式问题(Firefox 与 Chrome)
【发布时间】:2020-06-12 17:00:15
【问题描述】:

我在 Chrome 和 Firefox 中看到此日期格式命令的不同结果:

new Date(1156550400000).toLocaleDateString('en-us', {weekday: 'long', month: 'short', day: 'numeric', hour: '2-digit', hour12: false, timeZone: 'UTC'})+'z'

在 Firefox 中,我得到了这个结果(这是所需的输出格式):

Saturday, Aug 26, 00z"

在 Chrome 中,我得到了这个结果:

"Saturday, Aug 26, 24z"

很容易检查“24”值并替换为“00”,但希望有一个内置方法...... 是否有我在 toLocaleDateString 格式选项中缺少的选项,或获得所需格式的替代方法?

【问题讨论】:

  • 看起来像 V8“问题”。这也发生在节点中(在节点 v12.7.0 上测试)。

标签: javascript google-chrome datetime firefox datetime-format


【解决方案1】:

我发现选项“hour12”在 Mozilla Firefox 和 Google Chrome 中的工作方式不同。在这种情况下,使用选项 'hourCycle' 而不是 'hour12' 可能会有所帮助。

new Date(1156550400000).toLocaleDateString('en-us', {weekday: 'long', month: 'short', day: 'numeric', hour: '2-digit', hourCycle: "h23", timeZone: 'UTC'})+'z'

在 Mozilla Firefox(82.0(64 位))中,这将返回 "Saturday, Aug 26, 00z"。在 Google Chrome(版本 86.0.4240.111(官方构建)(64 位))中,这将返回 "Saturday, Aug 26, 00z"。

【讨论】:

  • 这个应该工作,虽然我现在没有积极地工作那个特定的任务。我目前无法实际测试它...接受它,因为它看起来比我原来的就地解决方法优雅得多。
猜你喜欢
  • 2012-11-29
  • 2013-07-01
  • 2017-11-30
  • 2010-11-08
  • 1970-01-01
  • 2011-10-24
  • 2013-05-24
  • 2014-05-03
  • 2014-12-02
相关资源
最近更新 更多