选型
- Moment.js
功能强大、应用宽泛、中文文档详尽。不再保护,体积大,官网不举荐新我的项目应用。 - Luxon
是由Moment.js的原开发者编写。没有中文文档。材料少。star数量:13.6K - Date-fns
反对 Tree shaking,能够依据须要进行按需引入。没有中文文档,材料少。star数量:31.1K - Day.js
是一个轻量级的 JavaScript 日期库,提供了相似 Moment.js 的 API,并且体积更小。它反对链式操作、格式化和持续时间计算。Day.js 还提供了插件零碎,能够依据须要扩大其性能。有中文文档。star数量:42.4K
Day.js罕用API
let dayjs = require('dayjs')// 1 format 格式化工夫console.log(dayjs('2018-04-04T16:00:00.000Z').format('YYYY-MM-DD HH:mm:ss'), 'format-format-format-format')// 2 isValid 校验是否是一个非法的日期var customParseFormat = require('dayjs/plugin/customParseFormat')console.log(dayjs('2022-01-33').isValid(), '非严格isValid')console.log(dayjs('xxx').isValid(), '非严格isValid')dayjs.extend(customParseFormat)console.log(dayjs('2022-02-31', 'YYYY-MM-DD', true).isValid(), '严格isValid')// 3 day 获取或设置星期几。传入 number 从0(星期天)到6(星期六)。 如果超出这个范畴,它会进位到其余周。console.log(dayjs().day(), '获取明天是周几')console.log(dayjs().day(3).format('YYYY-MM-DD'), '设置为周几')// 4 add 几天后console.log(dayjs().add(7, 'day').format('YYYY-MM-DD'), '几天后')// 5 locale 实例扭转语言 dayjs默认将一周的第一天是周日 周六是最初一天 将'zh-cn'作为参数传进去默认遵循中国地区require('dayjs/locale/zh-cn')console.log(dayjs().locale('zh-cn').startOf('week').format('YYYY-MM-DD'), 'startOf-startOf-startOf')console.log(dayjs().startOf('week').format('YYYY-MM-DD'), 'startOf-startOf-startOf')// 6 fromNow 间隔当初相差多长时间var relativeTime = require('dayjs/plugin/relativeTime')dayjs.extend(relativeTime)console.log(dayjs('1999-01-01').fromNow(true), 'fromNow-fromNow-fromNow')// 7 diff 返回指定单位下两个日期工夫之间的差别。const diffDate1 = dayjs('2019-01-25')const diffDate2 = dayjs('2018-06-05')console.log(diffDate1.diff(diffDate2, 'month'), 'Difference-Difference-Difference')// 8 valueOf 毫秒级工夫戳console.log(+dayjs('2019-01-25').valueOf(), 'Unix-Unix-Unix')// 9 daysInMonth 月份中天数console.log(dayjs('2019-02').daysInMonth(), 'daysInMonth-daysInMonth-daysInMonth')// 10 toObject 返回蕴含工夫信息的 Object。var toObject = require('dayjs/plugin/toObject')dayjs.extend(toObject)console.log(dayjs('2023-03-06').toObject(), 'toObject-toObject-toObject')// 11 isBefore Day.js对象是否在另一个提供的日期工夫之前。console.log(dayjs('2010').isBefore(dayjs('2011')), 'isBefore-isBefore-isBefore')// 12 isBetween 示意 Day.js对象是否在其余两个的日期工夫之间。var isBetween = require('dayjs/plugin/isBetween')dayjs.extend(isBetween)console.log(dayjs('2010-10-18').isBetween('2010-10-19', dayjs('2010-10-25')), 'isBetween-isBetween-isBetween')// 13 dayOfYear 示意 Dayjs的日期是年中第几天,或设置成是年中第几天。var dayOfYear = require('dayjs/plugin/dayOfYear')dayjs.extend(dayOfYear)console.log(dayjs('2023-03-06').dayOfYear(), 'dayOfYear-dayOfYear-dayOfYear')console.log(dayjs('2023').dayOfYear(65).format('YYYY-MM-DD'), 'dayOfYear-dayOfYear-dayOfYear')// 14 QuarterOfYear 减少了 .quarter() API 返回以后实例是哪个季度var quarterOfYear = require('dayjs/plugin/quarterOfYear')dayjs.extend(quarterOfYear)console.log(dayjs('2023-03-06').quarter())