前言
在前端/Node 日常开发中,日期时间处理几乎无处不在。 但目前主流库普遍存在一些痛点:
- moment 体积巨大、已停止维护
- dayjs 足够轻量,但 TypeScript 类型体验一般
- 原生 Date API 语法难写、容错差、扩展麻烦
最近在逛开源社区时,发现一个非常轻量化、原生 TypeScript 开发的日期工具库:dtejs。 整体定位很小而美,适合不想引入重依赖、又追求类型体验的项目。
GitHub 地址:github.com/dxiangwiki/… 安装方式也很简单:
npm install dtelib
一、先看亮点:它解决了什么问题?
简单总结几个比较吸引人的特点:
- 极致轻量,零第三方依赖 打包后小于 2KB,不引入任何冗余依赖,移动端/小程序也友好。
- 原生 TypeScript 全类型支持 不是后期加类型声明,而是原生 TS 编写,提示精准、不易踩类型坑。
- 内置中英文国际化开箱即用 不用额外装插件,直接支持中文/英文时间文案。
- 常用能力全覆盖:格式化 / 相对时间 / 日期计算 日常业务 90% 的日期场景基本不需要再自己封装。
- 容错友好,异常日期兼容较好 后端乱传时间、格式不标准也不容易直接报错崩溃。
二、上手体验:API 简洁直观
整体风格偏简约实用,下面贴几段常见业务示例:
1. 自定义模板格式化
import { format } from 'dtelib';
format('2026-03-20', 'YYYY-MM-DD HH:mm:ss');
format(Date.now(), 'YYYY年MM月DD日');
2. 智能相对时间(很适合列表展示)
import { fromNow } from 'dtelib';
fromNow(Date.now() - 5 * 60 * 1000);
// 5分钟前
fromNow(Date.now() + 3 * 24 * 3600 * 1000, 'en-US');
// 3 days later
3. 链式加减日期时间
import { Dte } from 'dtelib';
const nextWeek = new Dte('2026-03-20')
.add(7, 'day')
.subtract(2, 'hour')
.format('YYYY-MM-DD HH:mm');
4. 日期大小快速对比
Dte.compare('2026-03-20', '2026-03-19');
写法都很直白,学习成本很低。
三、横向对比主流日期库
客观做一张简表,方便选型参考:
| 库 | 体积 | TypeScript | 依赖 | 维护 | 国际化 |
|---|---|---|---|---|---|
| dtejs | < 2KB | 原生强支持 | 零依赖 | 活跃 | 内置中英 |
| dayjs | ~ 2KB | 一般需适配 | 零依赖 | 常规 | 需插件 |
| moment | ~ 200KB | 需额外类型包 | 较重 | 停止维护 | 配置繁琐 |
如果你项目符合下面情况,会很适合尝试 dtejs:
- 很在意打包体积、不想臃肿
- 全栈 TS,对类型提示严格
- 只需要常用:格式化、相对时间、加减对比
- 不想配置插件、希望开箱即用
四、小结与建议
严格来说,它不是颠覆性全能巨库,而是定位清晰、够用、轻量、舒服的日常工具库。 适合作为轻量替代方案,替换掉项目里笨重 moment,或统一掉一堆零散日期工具函数。
感兴趣可以直接去仓库查看完整源码与文档: 👉 github.com/dxiangwiki/…
如果后续持续迭代生态,个人觉得会是很稳的小型刚需依赖。