Skip to content

API 参考 ​

以下内容基于 1.0.1 实际发布产物逐项验证(而非 README 声明),含真实行为与已知缺陷。

format(offset?, pattern?) ​

参数类型说明
offsetstring(可选)偏移字符串('-7'、'+3',允许首尾空格);仅在同时传入第二个参数时生效
patternstring格式化模板

返回:格式化后的字符串。

调用行为(实测)
format()⚠️ 抛 TypeError(无参调用未处理)
format(pattern)当前时间按模板格式化
format(offset, pattern)偏移 N 天后(保留时分秒)按模板格式化
format('-7')⚠️ 单参偏移字符串被当模板,原样返回 '-7'

转义:Token 前加反斜杠可阻止替换(如 \a 输出 a)。

Token 表(v1 实际行为) ​

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

Token含义示例输出说明
YYYY四位年2023
yy两位年(小写)23v2 中改为大写 YY
Y中文年(逐位)二零二三与 v2 一致
MM两位月(补零)03
mm不补零月3v1 独有,v2 无此 Token
M中文月(逐位)三;10 月 → 一零v2 改为按数值:10 → 十
DD两位日(补零)10
dd不补零日10v1 独有,v2 无此 Token
D中文日(逐位)一零;25 日 → 二五v2 改为按数值:25 → 二十五
hh两位时(24 小时制补零)15与 v2 一致;不是 12 小时制
ii两位分(补零)00不是 mm
ss两位秒(补零)00
a时段下午仅两档:小时 > 12 → 下午,否则 上午;v2 为六档
EEE星期全称星期五
EE星期简称周五

辅助方法 ​

函数参数返回实测行为
getDays(date?)'YYYY-MM' 等number传参正常('2023-02' → 28、'2024-02' → 29);⚠️ 无参恒返回 31
getYearofDays(year?)number | stringnumber正常:闰年 366、平年 365;省略参数回退今年
getYearLastDays()无number按当前时刻到年底 23:59:59 取整(下午调用会比 v2 的"不含今天"少 1)

已知缺陷(1.0.1 实测) ​

  1. format() 无参调用抛 TypeError —— 需要默认格式请显式传 format('YYYY-MM-DD hh:ii:ss')。
  2. 同一 Token 出现两次时替换错乱 —— 每个模板 Token 只替换第一次,第二次起会与其它 Token 交叠出乱码(实测 format('YYYY-MM-DD YYYY-MM-DD') → '2026-10-25 二零二六YYY-一零M-二五D')。
  3. getDays() 无参恒返回 31 —— 实现以 new Date(null)(1970-01-01)为基准, 并非"本月天数"。
  4. 单参偏移字符串不生效 —— format('-7') 原样返回 '-7',偏移必须写在双参形式里。
  5. <script> 引入直接挂全局 —— 无命名空间,format 等高频命名污染 window。

以上问题在 v2 中均已修复。

与 v2 的行为差异 ​

差异点v1(1.0.x)v2(2.0.x)
format() 无参抛 TypeError返回默认模板的当前时间
两位年yy(小写)YY(大写)
不补零月 / 日mm / dd无对应 Token
中文月 M逐位(10 → 一零)按数值(10 → 十)
中文日 D逐位(25 → 二五)按数值(25 → 二十五)
时段 a上午 / 下午(>12 分界)凌晨 / 早上 / 上午 / 中午 / 下午 / 晚上
重复 Token替换错乱正常(全部替换)
getDays() 无参恒 31本月天数
打包UMD(<script> 可用)ESM + CJS,无 UMD
TypeScript 类型无自带 .d.ts
命名空间 / Builder无datefmt + DateFmt

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