Day.js
是一个轻量的 JavaScript 时间日期处理库,与 Moment.js
的 API 设计保持一致。
本文只介绍了一些常用操作,关于国际化、插件、自定义等高级内容详见官方文档。
其主要特性如下:
- 与
Moment.js
相同的 API 和用法
- 不可变数据(Immutable)
- 支持链式操作(Chainable)
- 只有 2kb 大小(一些高级用法以扩展的形式存在,可按需加载)
- 全浏览器兼容
- 强大的国际化支持(I18n)
官网:https://day.js.org/en
Github:https://github.com/iamkun/dayjs
1. 安装
1.1. 下载
下载地址:https://github.com/iamkun/dayjs/releases
1 2 3 4
| <script src="path/to/dayjs/dayjs.min.js"></script> <script> dayjs().format() </script>
|
1.2. CDN
1 2
| <script src="https://unpkg.com/dayjs@1.8.21/dayjs.min.js"></script> <script>dayjs().format()</script>
|
1.3. Node.JS
1
| npm install dayjs --save
|
1 2 3 4
| var dayjs = require('dayjs')
dayjs().format()
|
1.4. TypeScript
1
| npm install dayjs --save
|
1 2
| import * as dayjs from 'dayjs' dayjs().format()
|
更多见官方文档:https://day.js.org/docs/en/installation/typescript
2. API
2.1. 解析
Day.js
并没有改变或覆盖 Javascript 原生的 Date.prototype
, 而是创造了一个全新的包含 Javascript Date
的 Day.js
对象,可以直接使用 dayjs()
来调用。
Day.js
对象是不可变的, 所有的 API 操作都将返回一个新的 Day.js
对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
let now = dayjs();
let date = dayjs('2020-06-01');
let date = dayjs(1591149248030);
let date = dayjs(new Date(2020, 6, 1));
let date1 = date.clone(); let date2 = dayjs(date);
if (dayjs().isValid()) { } else { }
|
2.2. 获取和设置
1 2 3 4 5 6 7 8 9 10 11 12 13
| dayjs().year(); dayjs().month(); dayjs().date(); dayjs().hour(); dayjs().minute(); dayjs().second(); dayjs().millisecond(); dayjs().day();
dayjs().set('month', 3); dayjs().set('second', 30);
|
2.3. 操作
1 2 3 4 5 6 7 8 9 10 11
| dayjs().add(7, 'day');
dayjs().subtract(2, 'month');
dayjs().startOf('month');
dayjs().endOf('year');
|
2.4. 显示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| dayjs().format(); dayjs().format("YYYY-MM-DD HH:mm:ss");
dayjs('2020').diff(dayjs('1998')); dayjs('2020').diff(dayjs('1998'), 'year');
dayjs().valueOf(); dayjs().unix();
dayjs('2020-07').daysInMonth();
dayjs().toDate();
dayjs().toJSON(); dayjs().toISOString();
|
2.5. 查询
1 2 3 4 5 6 7 8
| dayjs('2020-06-03').isBefore(dayjs('2020-05-03'));
dayjs('2020-06-03').isAfter(dayjs('2020-05-03'));
dayjs('2020-06-03').isSame(dayjs('2020-06-03'));
|