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
相关产品推荐
相关产品推荐

