为了账号安全,请及时绑定邮箱和手机立即绑定

Intl.DateTimeFormat 显示时间为 24:59

Intl.DateTimeFormat 显示时间为 24:59

慕尼黑5688855 2022-06-05 15:56:49
大家好| 只是检查我是否做错了什么。下面的代码给了我时间 = 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感谢您的建议,我没有发现任何与此相关的问题。
查看完整描述

2 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

您的代码"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"

这似乎对我有用


查看完整回答
反对 回复 2022-06-05
?
互换的青春

TA贡献1797条经验 获得超6个赞

问题似乎是 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 others

console.log(d.toLocaleString('en-GB', opts)); // 00 all


查看完整回答
反对 回复 2022-06-05
  • 2 回答
  • 0 关注
  • 318 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号