Skip to content

格式化 Token ​

模板是普通字符串:Token 被替换为对应的日期部分,其余字符原样保留 (如 format('YYYY-MM-01') → '2023-03-01',其中的 01 就是固定字符)。

Token 总表 ​

以 2023-03-10 15:00:00(星期五)为例:

基础 Token

Token含义示例输出
YYYY四位年2023
YY两位年23
Y中文大写年(逐位)二零二三
MM两位月(补零)03
M中文月三
DD两位日(补零)10
D中文日十
hh两位时(24 小时制补零)15
H时(不补零,24 小时制)15
ii两位分(补零)00
i分(不补零)0
ss两位秒(补零)00
s秒(不补零)0
a时段下午
EEE星期全称星期五
EE星期简称周五

扩展 Token

Token含义示例输出说明
SSS三位毫秒(补零)007 / 123
Q季度1 ~ 43 月 → 1,12 月 → 4
DDD年内第几天(三位补零)0693 月 10 日(平年)= 31 + 28 + 10
wwISO 8601 年内周数(两位补零)10周一为一周开始,含当年首个周四的周为第 1 周;跨年边界周序号可能属于相邻年份(如 2023-01-01 → 52)
xUnix 时间戳(毫秒)1678431600000不受时区影响
XUnix 时间戳(秒)1678431600不受时区影响

WARNING

hh 是 24 小时制(不是 12 小时制),ii 是分钟(不是 mm)。 这与 dayjs / moment 风格相反,是为了兼容既有工具的调用约定,不要按常见库理解。

中文数字规则 ​

  • 年(Y) 逐位转换:2 0 2 3 → 二零二三(0零 1一 2二 3三 4四 5五 6六 7七 8八 9九)
  • 月(M) 按数值转换:3 → 三、10 → 十、11 → 十一、12 → 十二
  • 日(D) 按数值转换:10 → 十、20 → 二十、21 → 二十一、31 → 三十一
  • M/D 只输出中文数字本身,"月 / 日"等文字来自模板——format('M月') → '三月'、format('D日') → '十日'

时段(a)划分 ​

按 24 小时制的小时划分:

小时时段
0 ~ 5凌晨
6 ~ 8早上
9 ~ 11上午
12中午
13 ~ 17下午
18 ~ 23晚上

星期(EEE / EE) ​

EEE → 星期日 / 星期一 / … / 星期六;EE → 周日 / 周一 / … / 周六。

字面量转义 [方括号] ​

模板里的独立字母 a、i、s、H、Q、x、X、Y、M、D 都是 Token,会被替换。 模板中的固定文案请用 [方括号] 转义——方括号内的内容不作为 Token,脱去括号原样输出:

js
format('[abc]')        // 'abc'(而非 '上午bc')
format('off[s]et[-7]') // 'offset-7'(s 与 -7 都不再被当作 Token)
format('[今天是]EE')    // '今天是周五'
format('[YYYY]年')     // 'YYYY年'(想输出字面量 YYYY 的话)
formatDate('2023-03-10', '[第]Q季度 DDD')  // '第1季度 069'

未闭合的方括号(如 '[EE')不转义,维持原行为:括号原样保留、内部 Token 照常替换。

组合示例 ​

js
// 假设当前时间 2023-03-10 15:00:00(星期五)
format('YYYY-MM-DD hh:ii:ss')             // '2023-03-10 15:00:00'
format('YYYY年MM月DD日')                   // '2023年03月10日'
format('Y年M月D日')                        // '二零二三年三月十日'
format('hh:ii:ss a')                      // '15:00:00 下午'
format('今天EEE')                          // '今天星期五'
format('今天EE')                           // '今天周五'
format(' -7 ', 'Y年M月D日 YYYY/MM/DD a')   // '二零二三年三月三日 2023/03/03 下午'

注意事项 ​

  • Token 匹配按长度从长到短进行(EEE 先于 EE,YYYY 先于 YY),不会出现短 Token 吃掉长 Token 的情况。
  • 模板中的独立字母 a、i、s、H、Q、x、X、Y、M、D 都是 Token,会被替换——固定文案请用 [方括号] 转义。
  • ww 为 ISO 8601 周数:年末/年初的周序号可能属于相邻年份(2023-01-01 → 52、2024-12-30 → 01),与同一模板中 YYYY 的年份可能相差 1。
  • 与 v1 的 Token 行为差异(yy/mm/dd、中文逐位转换、时段档位)见 v1 API 参考 → 与 v2 的行为差异。

本站由 VitePress 静态生成,各版本文档相互独立。