如何不使用字符串方法实现en-IN时区AM/PM大写及en-US时区小写?
问题与解决方案
示例代码与输出
let d = new Date(); let opts = { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: true, }; console.log(1, Intl.DateTimeFormat('en-IN', opts).format(d)); console.log(2, Intl.DateTimeFormat('en-US', opts).format(d));
输出:1 09:15:37 am, 2 09:15:37 AM
问题解答
1. en-IN区域设置实现大写AM/PM(不使用字符串方法)
Intl.DateTimeFormat的标准配置项中没有直接控制am/pm大小写的参数,因为小写am/pm是en-IN区域本地化规则的默认行为。如果不想用字符串转换方法,可借助Unicode扩展键实现:
使用en-IN-u-cf-upper区域变体,强制启用大写格式,示例代码:
console.log(1, Intl.DateTimeFormat('en-IN-u-cf-upper', opts).format(d));
注意:该扩展的兼容性依赖运行环境,现代浏览器和Node.js 16+通常支持。
2. en-US区域设置实现小写am/pm(不使用字符串方法)
en-US默认显示大写AM/PM,同样无法通过标准配置项直接修改。可使用Unicode扩展键en-US-u-cf-lower强制小写:
console.log(2, Intl.DateTimeFormat('en-US-u-cf-lower', opts).format(d));
此特性基于Unicode的caseFirst扩展,旧环境可能不支持。
内容的提问来源于stack exchange,提问作者Goutam Debnath
相关产品推荐
相关产品推荐

