format 格式模板说明
Dayuts.format(formatStr) 通过格式模板将日期渲染为字符串。模板中的英文字母序列会被识别为 token,其余字符(中文、-、、:、/、年 等)作为原样字面量输出。
未传模板时使用默认模板 'YYYY-MM-DDTHH:mm:ssZ'。
同一种 token 的不同长度控制补零(MM/MM)与完整/缩写形式(MMMM/MMM)等细节,具体见下表。以下示例均以 2024-05-20 15:03:07(zh-cn 语言,周一)为例。
Token 表
年 Y
| Token | 输出示例 | 说明 |
|---|---|---|
YYYY | 2024 | 4 位年份,不足补 0 |
YY | 24 | 年份后两位 |
月 M
| Token | 输出示例 | 说明 |
|---|---|---|
MMMM | 五月 | 月份全名(zh-cn 为 五月,en 为 May) |
MMM | 5月 | 月份缩写,取全名后 3 位 / 本地化缩写 |
MM | 05 | 2 位月份,不足补 0 |
M | 5 | 月份,不补 0 |
日 DD 与星期 d
| Token | 输出示例 | 说明 |
|---|---|---|
DD | 20 | 2 位日期,不足补 0 |
D | 20 | 日期,不补 0 |
dddd | 星期一 | 星期全名 |
ddd | 周一 | 星期缩写 |
dd | 一 | 星期最小形式 |
d | 1 | 星期几数字(getDay(),0=周日,6=周六) |
时 24 小时制 H 与 12 小时制 h
| Token | 输出示例 | 说明 |
|---|---|---|
HH | 15 | 24 小时制,不足补 0 |
H | 15 | 24 小时制,不补 0 |
hh | 03 | 12 小时制(${H % 12 == 0 ? 12 : H % 12}),不足补 0 |
h | 3 | 12 小时制,不补 0 |
分 m、秒 s、毫秒 SSS
| Token | 输出示例 | 说明 |
|---|---|---|
mm | 03 | 分钟,不足补 0 |
m | 3 | 分钟,不补 0 |
ss | 07 | 秒,不足补 0 |
s | 7 | 秒,不补 0 |
SSS | 007 | 毫秒,3 位补 0 |
上午/下午 A a
| Token | 输出示例 | 说明 |
|---|---|---|
A | 下午 | 上午/下午,随语言变化(en 为 AM/PM) |
a | 下午 | 上午/下午小写形式(en 为 am/pm) |
zh-cn 语言的 A/a 按时间段输出本地称谓:凌晨(<6点)、早上(<9点)、上午(<11点)、中午(<13点)、下午(<18点)、晚上(其余)。
时区 Z
| Token | 输出示例 | 说明 |
|---|---|---|
Z | +08:00 | UTC 偏移,格式 ±HH:mm(如 +08:00、-05:00) |
转义 [ ]
在模板中使用 [方括号] 包裹的内容按字面量输出,不参与 token 解析。
| Token | 输出示例 | 说明 |
|---|---|---|
[YYYY] | YYYY | 方括号内按字面量输出 |
用法示例
typescript
const d = dayuts('2024-05-20 15:03:07', undefined, 'zh-cn')
d.format('YYYY-MM-DD HH:mm:ss') // "2024-05-20 15:03:07"
d.format('YYYY年M月D日 dddd') // "2024年5月20日 星期一"
d.format('MM/DD [Year] YYYY') // "05/20 Year 2024"
d.format('YYYY-MM-DDTHH:mm:ssZ') // "2024-05-20T15:03:07+08:00"
d.format('hh:mm a') // "03:07 下午"与 DateLib.fmtDate 的区别
注意:
DateLib.fmtDate使用另一套小写 token 体系(y/M/d/H/m/s),默认模板为'yyyy-MM-dd',并额外支持在模板中出现周/星期/礼拜时追加星期文案。两套 token 互不通用,详见 DateLib 方法。
