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

如何不使用字符串方法实现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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 04:15:53