You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中toLocaleString()格式化en-GB与en-US的时间差异问询

我未找到关于en-GB与en-US在00:00或12:00格式上的特殊文档说明。意外发现返回结果是0:00 am,而非预期的12:00 am,这似乎由toLocaleString()中使用的locale类型触发。

const options = { hour12: true, timeStyle: 'short' }

const midnight = new Date('2023-01-01T00:00:00'); // 24小时制的'00:00'
midnight.toLocaleString('en-GB', options);        // 返回'0:00 am' ⛔️
midnight.toLocaleString('en-US', options);        // 返回'12:00 AM'

const one = new Date('2023-01-01T01:00:00');      // 24小时制的'01:00'
one.toLocaleString('en-GB', options);             // 返回'1:00 am' ✅
one.toLocaleString('en-US', options);             // 返回'1:00 AM'

const eleven = new Date('2023-01-01T11:00:00');   // 24小时制的'11:00'
eleven.toLocaleString('en-GB', options);          // 返回'11:00 am' ✅
eleven.toLocaleString('en-US', options);          // 返回'11:00 AM'

const noon = new Date('2023-01-01T12:00:00');     // 24小时制的'12:00'
noon.toLocaleString('en-GB', options);            // 返回'0:00 pm' ⛔️
noon.toLocaleString('en-US', options);            // 返回'12:00 PM'

const twenty3 = new Date('2023-01-01T23:00:00');  // 24小时制的'23:00'
twenty3.toLocaleString('en-GB', options);         // 返回'11:00 pm' ✅
twenty3.toLocaleString('en-US', options);         // 返回'11:00 PM'

12小时制格式难道不应该全球统一,而非美英有别?

  • dayjs.format()采用美式格式(无需指定locale)
  • Date.toLocaleString()必须指定locale

浏览器差异

  • MacOS 13.3/M1 + Chrome 112:en-GB显示异常 ⛔️
  • MacOS 13.3/M1 + Safari 16.4:美英表现一致 ✅

内容的提问来源于stack exchange,提问作者Fabian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:05:36