从JS Date对象提取时间时返回24:46无效时间的问题咨询
问题分析与解决方案
这是个很常见的本地化时间格式坑!问题出在你使用的timeStyle: 'short'配置上——哪怕你明确设置了hour12: false,这个快捷样式的本地化规则在处理午夜(0点)时段时,会遵循en-US地区的规范,用24:xx来表示而不是预期的00:xx。
为什么会这样?
timeStyle是一个简化配置,它的输出逻辑完全依赖目标地区(这里是en-US)的本地化时间格式标准。对于美式英语的24小时制短时间格式,午夜时分的显示就是24:xx,这属于规范内的行为,不是代码bug。
怎么解决?
放弃使用timeStyle,转而明确指定小时和分钟的格式,强制让输出遵循2位数字的24小时制规则。修改后的代码如下:
let options = { hour12: false, timeZone: 'America/Chicago', hour: '2-digit', minute: '2-digit' }; let myDate = new Date('2021-06-07T05:46:00.000Z').toLocaleTimeString("en-US", options); // 此时输出会是 "00:46",完全符合你的预期
这种配置方式绕开了timeStyle的本地化规则限制,直接定义了小时和分钟的显示格式,确保任何时段都能输出标准的24小时制时间。
内容的提问来源于stack exchange,提问作者gs650x
相关产品推荐
相关产品推荐

