Day.js 是一个轻量的 JavaScript 时间日期处理库。与 Moment.js 的 API 设计保持一致,随着moment的包逐渐变大,官方已经决定未来停止维护相关moment.js库,并且官网也推荐使用dayjs库,因为它有很多优势。
其主要特性如下:
- 与 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. CDN
1.3. Node.JS
npm install dayjs --savevar dayjs = require('dayjs')//import dayjs from 'dayjs' // ES 2015dayjs().format()1.4. TypeScript
npm install dayjs --saveimport * 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 对象。
// 返回包含当前日期和时间的 Day.js 对象// 什么都不传,相当于 dayjs(new Date())let now = dayjs();// 传入一个标准的 ISO 8601 时间字符串// https://en.wikipedia.org/wiki/ISO_8601let date = dayjs('2020-06-01');// 传入一个 Unix 时间戳 (13位)let date = dayjs(1591149248030);// 传入一个 Javascript Date 对象let date = dayjs(new Date(2020, 6, 1));// 因为 Day.js 对象是不可变的,可使用如下方法获取一个对象拷贝let date1 = date.clone(); // 方法一:在一个 Day.js 对象上使用 clone 函数let date2 = dayjs(date); // 方法二:传入一个 Day.js 对象// 检查当前 Day.js 对象是否是有效日期时间if (dayjs().isValid()) { // 有效} else { // 无效}2.2. 获取和设置
// 获取,返回 number 类型的值dayjs().year(); // 年 ==> dayjs().get('year')dayjs().month(); // 月 ==> dayjs().get('month')dayjs().date(); // 日 ==> dayjs().get('date')dayjs().hour(); // 时 ==> dayjs().get('hour')dayjs().minute(); // 分 ==> dayjs().get('minute')dayjs().second(); // 秒 ==> dayjs().get('second')dayjs().millisecond(); // 毫秒 ==> dayjs().get('millisecond')dayjs().day(); // 本周的第几天 ==> dayjs().get('day')// 设置,单位对应的值大小写不敏感dayjs().set('month', 3);dayjs().set('second', 30);2.3. 操作
// 增加dayjs().add(7, 'day'); // 增加 7 天// 减少dayjs().subtract(2, 'month'); // 减少 2 个月// 开头dayjs().startOf('month'); // 当月第一天// 末尾dayjs().endOf('year'); // 当年最后一天2.4. 显示
// 格式化dayjs().format(); // 默认格式,如:2020-06-03T20:06:13+08:00dayjs().format("YYYY-MM-DD HH:mm:ss"); // 指定格式 2020-06-03 20:07:12// 获取两个 Day.js 对象的时间差,默认毫秒,可指定单位dayjs('2020').diff(dayjs('1998')); // 694224000000dayjs('2020').diff(dayjs('1998'), 'year'); // 22// 时间戳dayjs().valueOf(); // 毫秒dayjs().unix(); // 秒// 天数dayjs('2020-07').daysInMonth(); // 31// 原生 Date 对象dayjs().toDate(); // Wed Jun 03 2020 20:13:40 GMT+0800 (China Standard Time)// 返回 ISO 8601 格式的字符串dayjs().toJSON(); // "2020-06-03T12:15:54.635Z"dayjs().toISOString(); // "2020-06-03T12:16:48.199Z"2.5. 查询
// 检查一个日期是否在另一个日期之前dayjs('2020-06-03').isBefore(dayjs('2020-05-03')); // false// 检查一个日期是否在另一个日期之后dayjs('2020-06-03').isAfter(dayjs('2020-05-03')); // true// 检查两个日期是否相同dayjs('2020-06-03').isSame(dayjs('2020-06-03')); // true

3982

被折叠的 条评论
为什么被折叠?



