一、Day.js 简介
与Moment.js 一样,Day.js 是一个轻量的处理时间和日期的 JavaScript 库,两者的API 设计保持完全一样,只要你会Moment.js,那么你就会Day.js
- 和 Moment.js 相同的 API 和用法
- 不可变数据 (Immutable)
- 支持链式操作 (Chainable)
- 仅 2kb 大小的微型库
- 全浏览器兼容
二、使用方式
1、安装
npm install dayjs
然后在项目代码中引入即可:
var dayjs = require('dayjs')
dayjs().format()
或者
import dayjs from 'dayjs' // ES 2015
main.js引入
import dayjs from 'dayjs';
Vue.prototype.$dayjs = dayjs;
API参考:
Dayjs 并没有改变或覆盖 Javascript 原生的 Date.prototype, 而是创造了一个全新的包含 Javascript Date 对象的 Dayjs 的对象。
Dayjs 对象是不可变的, 所有的 API 操作都将返回一个新的 Dayjs 对象。
API可支持链式调用
dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss');
三、常见用法
1. 获取当前时间戳
dayjs('2021-05-01 12:00:00').unix()
const endTime = dayjs(
dayjs(queryDate.endTime).format("YYYY-MM-DD HH:mm:ss")
).unix();
2.格式化时间
let time = 1627747199
const dateFormat = dayjs(time).format('YYYY-MM-DD HH:mm:ss')
console.log(dateFormat) // 2021-07-31 23:59:59
3.指定时间
获取上一个月15号 00:00:00 时间戳
dayjs()
.subtract(1, 'month')
.date(15)
.hour(0)
.minute(0)
.second(0)
.unix()
等同于
dayjs()
.subtract(1, 'month')
.date(15)
.startOf('day')
.unix()
获取明天早上 10:00:00 时间戳
const today = dayjs().date() // 获取今天几号
const tomorrow = dayjs().date(today + 1).hour(10).minute(0).second(0).unix()
获取当月14号 23:59:59
dayjs()
.date(14)
.hour(23)
.minute(59)
.second(59)
.format('YYYY-MM-DD HH: mm :ss')
等同于
dayjs()
.date(14)
.endOf('day')
.format('YYYY-MM-DD HH: mm :ss')
时间戳转换网站
时间戳转换网站
4. 获取当前时间
直接运行 dayjs(),得到包含当前时间和日期的 Dayjs 对象。
直接运行 dayjs(),得到包含当前时间和日期的 Dayjs 对象。
dayjs()
5. 时间字符串
可以解析传入的一个标准的ISO 8601时间字符串。
dayjs(String)
dayjs('1995-12-25')
6. Date 对象
可以解析传入的一个 Javascript Date 对象。
dayjs(Date)
dayjs(new Date(2018, 8, 18))
7. Unix 时间戳 (毫秒)
可以解析传入的一个 Unix 时间戳 (13 位数字)。
dayjs.unix(Number)
dayjs.unix(1318781876)
8. Unix 时间戳 (秒)
可以解析传入的一个 Unix 时间戳 (10 位数字)。
dayjs.unix(Number)
dayjs.unix(1318781876)
9. 复制
Dayjs 对象是不可变的,如果您想获得一个对象的拷贝,请执行 .clone()。 向 dayjs() 里传入一个 Dayjs 对象也能实现同样的效果。
dayjs(Dayjs)
dayjs().clone()
10. 验证
return Boolean
检测当前 Dayjs 对象是否是一个有效的时间。
dayjs().isValid()
四、 获取
1. 年。获取和改变日期。获取或设置年份
dayjs().year()
dayjs().year(2000)
2. 月。获取或设置月份。从 0 开始
dayjs().month()
dayjs().month(0)
3. 日。获取或设置日期。从 1 开始
dayjs().date()
dayjs().date(1)
4. 星期。获取或设置日期。从 0 开始
dayjs().day()
dayjs().day(0)
5. 小时。获取或设置小时。
dayjs().hour()
dayjs().hour(12)
6. 分。获取或设置分钟。
dayjs().minute()
dayjs().minute(59)
7. 秒。获取或设置秒。
dayjs().second()
dayjs().second(1)
8. 毫秒。获取或设置毫秒。
dayjs().millisecond()
dayjs().millisecond(1)
8. 获取。获取从 Dayjs 对象中取到的信息 传入的单位 (unit) 对大小写不敏感。
dayjs().get(unit : String)
dayjs().get('month') // 从 0 开始
dayjs().get('day')
- 可用单位

五、 设置
1.设置时间。
dayjs().set(unit : String, value : Int);
dayjs().set('date', 1);
dayjs().set('month', 3); // 四月
dayjs().set('second', 30);
2。操作时间。
dayjs()
.startOf('month')
.add(1, 'day')
.subtract(1, 'year')
3。增加时间。
dayjs().add(value : Number, unit : String);
dayjs().add(7, 'day');
4。减少时间。
dayjs().subtract(value : Number, unit : String);
dayjs().subtract(7, 'year');
5。开头时间。
dayjs().startOf(unit : String);
dayjs().startOf('week'); // 取决于 locale 文件里 `weekStart` 的值
6。结束时间。
dayjs().endOf(unit : String);
dayjs().endOf('month');
六、 显示
1。格式化 Dayjs 对象并展示。
格式化
return String
接收一系列的时间日期字符串并替换成相应的值。
dayjs().format(String)
dayjs('2019-01-25').format('[YYYY] YYYY-MM-DDTHH:mm:ssZ[Z]') // 'YYYY 2019-01-25T00:00:00-02:00Z'
dayjs().format('{YYYY} MM-DDTHH:mm:ssZ[Z]') // "{2014} 09-08T08:02:17-05:00Z"
详情如下:

七、 时间差
1。获取两个 Dayjs 对象的时间差,默认毫秒。
return Number
获取两个 Dayjs 对象的时间差,默认毫秒。
const date1 = dayjs('2019-01-25')
const date2 = dayjs('2018-06-05')
date1.diff(date2) // 20214000000
date1.diff(date2, 'month') // 7
date1.diff(date2, 'month', true) // 7.645161290322581
date1.diff(date2, 'day') // 233
2。Unix 时间戳 (毫秒)。return Number。返回 Unix 时间戳 (毫秒)。
dayjs().valueOf()
3。Unix 时间戳 (秒)。
return Number
返回 Unix 时间戳 (秒)。
dayjs().unix()
4。UTC 偏移量 (分)。
返回 UTC 偏移量 (分)
dayjs().utcOffset()
5。天数 (月)。
return Number
返回月份的天数。
dayjs().daysInMonth()
6。Date 对象。
return Javascript Date object
返回原生的 Date 对象。
dayjs().toDate()
7。As JSON。
return JSON String
当序列化 Dayjs 对象时,会返回 ISO8601 格式的字符串。
dayjs().toJSON() //"2018-08-08T00:00:00.000Z"
8。ISO 8601 字符串。
return String
返回 ISO8601 格式的字符串。
dayjs().toISOString()
9。字符串。
return String
dayjs().toString()
八、 查询
1。是否之前。
return Boolean
检查一个 Dayjs 对象是否在另一个 Dayjs 对象时间之前。
dayjs().isBefore(Dayjs, unit? : String);
dayjs().isBefore(dayjs()); // false
dayjs().isBefore(dayjs(), 'year'); // false
2。是否相等。
return Boolean
检查一个 Dayjs 对象是否和另一个 Dayjs 对象时间相同。
dayjs().isSame(Dayjs, unit? : String);
dayjs().isSame(dayjs()); // true
dayjs().isSame(dayjs(), 'year'); // true
3。是否之后。
return Boolean
检查一个 Dayjs 对象是否在另一个 Dayjs 对象时间之后。
dayjs().isAfter(Dayjs, unit? : String);
dayjs().isAfter(dayjs()); // false
dayjs().isAfter(dayjs(), 'year'); // false
4。是否是 Dayjs .isDayjs(compared: any)。
返回一个 boolean 验证传入值是否是一个 Dayjs 对象.
dayjs.isDayjs(dayjs()) // true
dayjs.isDayjs(new Date()) // false
5。也可以使用 instanceof。
dayjs() instanceof dayjs // true
九、 目前使用中
1.格式化日期
import dayjs from 'dayjs';
dayjs(vehicle.PT).format('YYYY-MM-DD HH:mm:ss')
dayjs(vehicle.R).format('YYYY-MM-DD HH:mm:ss')
2.获取月份最后一天
let month = dayjs().month() + 1;
month = month < 10 ? "0" + month : month;
const year = dayjs().year();
const dateStr = `${ year }-${ month }-01`;
this.startTime = dayjs(dateStr).format("YYYY-MM-DD 00:00:00");
//当月最后一天
this.endTime = dayjs(`${ year }-${ month }`).endOf('month').format('YYYY-MM-DD 23:59:59');
3.获取年开始与结束日
const dateStr = `${ year }-01-01`;
this.startTime = dayjs(dateStr).format("YYYY-MM-DD 00:00:00");
this.endTime = dayjs(`${ year }-12-31`).format("YYYY-MM-DD 23:59:59");
4.获取时间间隔

const intervalDay = dayjs(this.queryDate.endTime).diff(
this.queryDate.beginTime,
"day"
);
if (intervalDay > 2) {
return this.$message.warning("日期间隔不能大于3天");
}
5.格式化时间时分秒
dayjs(begintime).format('HH:mm:ss'),
dayjs(endtime).format('HH:mm:ss')

9万+




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



