Intl.DateTimeFormat 显示时间为 24:59

大家好| 只是检查我是否做错了什么。下面的代码给了我时间 = 24:59,在布拉格 (GMT+1)。使用铬。


new Intl.DateTimeFormat(

  'en',

  {

     weekday: 'long',

     month: 'long',

     day: 'numeric',

     hour: 'numeric',

     minute: 'numeric',

     hour12: false

  }

 ).format(new Date('2020-03-11T23:59:00Z')

// "Thursday, March 12, 24:59"

使用 .getHours() 时,我会得到正确的 0 值。


new Date('2020-03-11T23:59:00Z'); // Thu Mar 12 2020 00:59:00 GMT+0100 (Central European Standard Time)

new Date('2020-03-11T23:59:00Z').getHours(); // 0

感谢您的建议,我没有发现任何与此相关的问题。


慕尼黑5688855
浏览 319回答 2
2回答

吃鸡游戏

您的代码"Thursday, March 12, 00:59"在 Firefox 和"Thursday, March 12, 24:59"Chrome (80.0.3987.149) 中提供给我Chrome 80 https://support.google.com/chrome/thread/29828561?hl=en似乎存在一个错误,自 2 月起开放,但关于是否修复以及如何修复的说法不多。考虑支持它。根据那里发布的评论,您可以通过将hour12属性替换为hourCycle: 'h23'.new Intl.DateTimeFormat(  'en',  {     weekday: 'long',     month: 'long',     day: 'numeric',     hour: 'numeric',     minute: 'numeric',     hourCycle: 'h23'  } ).format(new Date('2020-03-11T23:59:00Z'))// "Thursday, March 12, 00:59"这似乎对我有用

互换的青春

问题似乎是 HourCycle 和 langauge 的默认设置en,这是您所期望的h23,但 Chrome 正在使用h24. 您可以按照toniedzwiedz 的描述修复它,或者您可以为语言标签提供合适的国家/地区代码以强制 HourCycle 默认为h23,例如 GB:let d = new Date(2020,2,1,0,23);let opts = { hour12: false, hour: 'numeric' };console.log(d.toLocaleString('en', opts)); // 24 (Chrome), 00 othersconsole.log(d.toLocaleString('en-GB', opts)); // 00 all
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript