完全兼容旧版 format
format('-7', 'YYYY-MM-DD')、format('Y年') 等既有调用约定逐字一致,老代码无需改动即可迁移到 v2。
完全兼容旧版 format 调用约定,按功能提供五组 API:格式化(含中文大写日期)、解析与校验(iOS 兼容)、相对时间与差值、日期比较、年月信息。datefmt 命名空间 + Builder 链式调用,避免变量污染。
无需安装,直接体验与 npm 包 2.1.0 完全一致的格式化行为:
与 npm 包 2.1.0 行为一致:hh 是 24 小时制、ii 是分钟;Y/M/D 输出中文数字(二零二六 / 十 / 二十五),"年月日"等文字来自模板;扩展 Token(SSS/Q/DDD/ww/x/X)与 [方括号] 字面量转义同样可用。完整 Token 表见 格式化 Token。
安装并引入,一行代码完成格式化:
import { format, formatDate, fromNow, datefmt } from '@iefe/dateformat'
format() // '2026-10-26 16:40:00'(默认模板 YYYY-MM-DD hh:ii:ss)
format('-7', 'YYYY-MM-DD') // 7 天前
format('Y年M月D日') // '二零二六年十月二十六日'
formatDate('2024-02-29') // '2024-02-29 00:00:00'(格式化任意日期)
fromNow('2026-10-26 16:10') // '30 分钟前'
datefmt.create('YYYY-MM-DD').offset(-7).render() // 不可变 Builder 链式调用import { isValid, isToday, diff, getDays, getYearofDays, isLeapYear } from '@iefe/dateformat'
isValid('2023-02-29') // false(平年 2 月无 29 日,回写校验)
isToday('2026-10-26 23:59') // true
diff('2024-03-01', '2024-01-01', 'day') // 60
getDays('2028-02') // 29
getYearofDays(2028) // 366
isLeapYear(1900) // falseWARNING
与 dayjs / moment 不同:本工具 hh 表示 24 小时制补零、ii 表示分钟(不是 mm)。 这是为了与既有工具保持兼容,详见 格式化 Token。
| 版本 | 发布日期 | 状态 | 说明 | 文档 |
|---|---|---|---|---|
| 2.1.0 | 2026-10-27 | ✅ 当前稳定版 | 五组功能 API:格式化、解析与校验、相对时间与差值、日期比较、年月信息;扩展 Token 与 [方括号] 转义、datefmt 命名空间、Builder 链式调用 | 进入文档 |
| 2.0.1 | 2026-10-25 | 🔒 冻结(仅存档) | format(16 个基础 Token)+ 三个年月信息辅助方法 + datefmt / Builder | 进入文档 |
| 1.0.1 | 2023-03-10 | 🔒 冻结(仅存档) | UMD 单文件 ~2KB,format + 三个辅助方法(含已知缺陷) | 进入文档 |
NOTE
每个发布版本保留一份独立文档:各版本目录互不引用,历史版本的文档保持其 发布时的行为描述,不随新版本演进而改变。各版本间的 Token 行为存在差异 (如中文数字转换规则、a 时段档位、扩展 Token 支持范围),请按你实际安装的 版本查阅对应文档。