https://day.js.org/en/ dayjs 官网
https://dayjs.gitee.io/zh-CN/ dayjs 中文网
https://dayjs.fenxianglu.cn/ dayjs 中文网
常用API总结
1 、获取当前年度
dayjs().format("YYYY")
// '2022'
2 、获取今年第一天
dayjs().format("YYYY") + "-01-01"
// '2022-01-01'
dayjs().startOf('year').format('YYYY-MM-DD')
// '2022-01-01'
3 、获取当天
dayjs().format("YYYY-MM-DD")
// '2022-01-01'
4 、获取当月
dayjs().startOf('month').format('YYYY-MM')
// '2022-07'
5 、获取当月第一天
dayjs().startOf('month').format('YYYY-MM-DD')
// '2022-07-01'
6 、获取本周第一天(周一)
dayjs().subtract(dayjs().day() ? dayjs().day() - 1 : 6, "day").format("YYYY-MM-DD");
// '2022-07-25'
7 、获取本周第一天(周日)
dayjs().startOf('week').format('YYYY-MM-DD')
// '2022-07-24'
8 、获取当前时间点
// 时
dayjs().startOf('hour').format('HH') // '11'
// 分
dayjs().startOf('minute').format('HH:mm') // '11:38'
// 秒
dayjs().startOf('second').format('HH:mm:ss') // '11:39:09'
// 当前时间点(精确到秒)
dayjs().endOf().format('YYYY-MM-DD HH:mm:ss') // '2022-07-28 14:15:13'
9 、从今天往后计算 的 第N天
let n = 7;
dayjs().add(n, 'day').format('YYYY-MM-DD')
// 2022-08-04
10 、获取N年前的今天
let n = 1;
dayjs().subtract(n, 'year').format('YYYY-MM-DD')
// 2021-07-28
11 、获取N天前
let n = 3;
dayjs().subtract(n, 'day').format('YYYY-MM-DD');
// 2022-07-25
12 、获取本月(或指定月份)天数
// 获取本月天数
dayjs().daysInMonth() // 31
// 获取指定月份天数
dayjs('2022-06').daysInMonth() // 30
13 、计算两个指定日期之间的(年,月,天,小时,分,秒)
// 相差: 年 参数--year
dayjs('2022-02-01').diff('2012-01-01','year') // 10
// 相差: 月 参数--month
dayjs('2022-02-01').diff('2012-01-01','month') // 121
// 相差: 天 参数--day
dayjs('2022-02-01').diff('2012-01-01','day') // 3684
// 相差:时 参数--hour
dayjs('2022-02-01').diff('2012-01-01','hour') // 88416
// 相差:分 参数--minute
dayjs('2022-02-01').diff('2012-01-01','minute') // 5304960
// 相差: 秒 参数--second
dayjs('2022-02-01').diff('2012-01-01','second') // 318297600
在设计上 Day.js 的 getter
和 setter
使用了相同的 API,也就是说,不传参数调用方法即为 getter
,调用并传入参数为 setter
。
这些 API 调用了对应原生 Date
对象的方法。
dayjs().second(30).valueOf() // => new Date().setSeconds(30)
dayjs().second() // => new Date().getSeconds()
如果您处于 UTC 模式,将会调用对应的 UTC 方法。
dayjs.utc().seconds(30).valueOf()// => new Date().setUTCSeconds(30)
dayjs.utc().seconds()// => new Date().getUTCSeconds()
#毫秒
获取或设置毫秒。
传入0到999的数字。 如果超出这个范围,它会进位到秒。
dayjs().millisecond()
dayjs().millisecond(1)
#秒
获取或设置秒。
传入0到59的数字。 如果超出这个范围,它会进位到分钟。
dayjs().second()
dayjs().second(1)
#分钟
获取或设置分钟。
传入0到59的数字。 如果超出这个范围,它会进位到小时。
dayjs().minute()
dayjs().minute(59)
#小时
获取或设置小时。
传入0到23的数字。 如果超出这个范围,它会进位到天数。
dayjs().hour()
dayjs().hour(12)
#日期
获取或设置月份里的日期。
接受1到31的数字。 如果超出这个范围,它会进位到月份。
dayjs().date()
dayjs().date(1)
注意
dayjs#date
是该月的日期。 dayjs#day
是星期几。
#星期
获取或设置星期几。
传入 number 从0(星期天)到6(星期六)。 如果超出这个范围,它会进位到其他周。
dayjs().day()
dayjs().day(0)
注意
dayjs#date
是该月的日期。 dayjs#day
是星期几。
#本地化星期
根据本地化配置获取或设置星期几。
注意
此功能依赖 Weekday 插件,才能正常运行
如果本地化配置了星期天为一周的第一天, dayjs().weekday(0)
将返回星期天。 如果星期一是一周的第一天, dayjs().weekday(0)
将返回星期一。
dayjs.extend(weekday)
// 当星期天是一周的第一天
dayjs().weekday(-7); // last Sunday
dayjs().weekday(7); // next Sunday
// 当星期一是一周的第一天
dayjs().weekday(-7) // last Monday
dayjs().weekday(7) // next Monday
// 当星期天是一周的第一天
dayjs().weekday(-5) // last Tuesday (5th day before Sunday)
dayjs().weekday(5) // next Friday (5th day after Sunday)
#ISO星期
获取或设置 ISO 星期几 (opens new window),其中 1 是星期一、7 是星期日。
注意
此功能依赖 IsoWeek 插件,才能正常运行
dayjs.extend(isoWeek)
dayjs().isoWeekday()
dayjs().isoWeekday(1); // Monday
#年-日期
获取或设置年份里第几天。
传入1到366的数字。
如果超出这个范围,它会进位到下一年。
注意
此功能依赖 DayOfYear 插件
dayjs.extend(dayOfYear)
dayjs('2010-01-01').dayOfYear() // 1
dayjs('2010-01-01').dayOfYear(365) // 2010-12-31
#年-周
获取或设置该年的第几周。
注意
此功能依赖 WeekOfYear 插件
dayjs.extend(weekOfYear)
dayjs('2018-06-27').week() // 26
dayjs('2018-06-27').week(5) // 设置周
注意
week()
函数是特定于区域设置的,因此应该在之前导入区域设置。
import "dayjs/locale/zh-cn";
dayjs.locale("zh-cn");
dayjs("2022-8-8").week(1).format("YYYY-MM-DD"); // 2022-01-03
dayjs("2022-8-9").week(1).format("YYYY-MM-DD"); // 2022-01-04
#年-周(ISO)
获取或设置年份的 ISO 星期 (opens new window)。
注意
此功能依赖 IsoWeek 插件
dayjs.extend(isoWeek)
dayjs().isoWeek()
dayjs().isoWeek(2)
#月
获取或设置月份。
传入0到11的 number。 如果超出这个范围,它会进位到年份。
dayjs().month()
dayjs().month(0)
注意
月份是从 0 开始计算的,即 1 月是 0。
#季度
获取或设置季度。
注意
此功能依赖 QuarterOfYear 插件
dayjs.extend(quarterOfYear)
dayjs('2010-04-01').quarter() // 2
dayjs('2010-04-01').quarter(2)
#年
获取或设置年份。
dayjs().year()
dayjs().year(2000)
#周年
获取基于当前语言配置的按周计算的年份。
注意
此功能依赖 WeekYear 插件
dayjs.extend(weekYear)
dayjs.extend(weekOfYear)
dayjs().weekYear()
#周年(ISO)
注意
此功能依赖 IsoWeek 插件
dayjs.extend(isoWeek)
dayjs().isoWeekYear()
#年周数(ISO)
获取当前年份的周数,根据 ISO weeks (opens new window)的定义。
注意
此功能依赖 IsoWeeksInYear 插件
dayjs.extend(isoWeeksInYear)
dayjs.extend(isLeapYear)
dayjs('2004-01-01').isoWeeksInYear() // 53
dayjs('2005-01-01').isoWeeksInYear() // 52
#Get
从 Day.js 对象中获取相应信息的 getter。
可以理解为:
dayjs().get(unit) === dayjs()[unit]()
各个传入的单位对大小写不敏感,支持缩写和复数。 请注意,缩写是区分大小写的。
dayjs().get('year')
dayjs().get('month') // start 0
dayjs().get('date')
dayjs().get('hour')
dayjs().get('minute')
dayjs().get('second')
dayjs().get('millisecond')
支持的单位列表:
单位 | 缩写 | 描述 |
date | D | 日期 |
day | d | 星期(星期日0,星期六6) |
month | M | 月份(0-11) |
year | y | 年 |
hour | h | 小时 |
minute | m | 分钟 |
second | s | 秒 |
millisecond | ms | 毫秒 |
#Set
通用的 setter,两个参数分别是要更新的单位和数值,调用后会返回一个修改后的新实例。
可以理解为:
dayjs().set(unit, value) === dayjs()[unit](value)
dayjs().set('date', 1)
dayjs().set('month', 3) // 四月
dayjs().set('second', 30)
也支持这样的链式调用:
dayjs().set('hour', 5).set('minute', 55).set('second', 15)
各个传入的单位对大小写不敏感,支持缩写和复数。
#最大值
返回传入的 Day.js 实例中的最大的 (即最靠近未来的)。 它接受传入多个 Day.js实例或一个数组。
注意
此功能依赖 MinMax 插件
dayjs.extend(minMax)
dayjs.max(dayjs(), dayjs('2018-01-01'), dayjs('2019-01-01'))
dayjs.max([dayjs(), dayjs('2018-01-01'), dayjs('2019-01-01')])
#最小值
返回传入的 Day.js 实例中的最小的 (即最靠近过去的)。 它接受传入多个 Day.js实例或一个数组。
注意
此功能依赖 MinMax 插件
dayjs.extend(minMax)
dayjs.min(dayjs(), dayjs('2018-01-01'), dayjs('2019-01-01'))
dayjs.min([dayjs(), dayjs('2018-01-01'), dayjs('2019-01-01')])
您可能需要一些方法来操作 Day.js 对象。
Day.js 支持像这样的链式调用:
dayjs('2019-01-25').add(1, 'day').subtract(1, 'year').year(2009).toString()
#增加
返回增加一定时间的复制的 Day.js 对象。
dayjs().add(7, 'day')
各个传入的单位对大小写不敏感,支持缩写和复数。 请注意,缩写是区分大小写的。
支持的单位列表:
单位 | 缩写 | 描述 |
day | d | 日 |
week | w | 周 |
month | M | 月份(0-11) |
quarter | Q | 季度,依赖 |
year | y | 年 |
hour | h | 小时 |
minute | m | 分钟 |
second | s | 秒 |
millisecond | ms | 毫秒 |
或者,也可以给 Day.js 对象增加一个 持续时间 。
#减去
返回减去一定时间的复制的 Day.js 对象。
dayjs().subtract(7, 'year')
各个传入的单位对大小写不敏感,支持缩写和复数。
#时间的开始
返回复制的 Day.js 对象,并设置到一个时间的开始。
dayjs().startOf('year')
各个传入的单位对大小写不敏感,支持缩写和复数。
支持的单位列表:
单位 | 缩写 | 描述 |
date | D | 当天 00:00 |
day | d | 当天 00:00 |
month | M | 本月1日上午 00:00 |
quarter | Q | 本季度第一个月1日上午 00:00,依赖 |
year | y | 今年一月1日上午 00:00 |
week | w | 本周的第一天上午 00:00 |
isoWeek | 本周的第一天上午 00:00 (根据 ISO 8601) , ( 依赖 | |
hour | h | 当前时间,0 分、0 秒、0 毫秒 |
minute | m | 当前时间,0 秒、0 毫秒 |
second | s | 当前时间,0 毫秒 |
#时间的结束
返回复制的 Day.js 对象,并设置到一个时间的末尾。
dayjs().endOf('month')
各个传入的单位对大小写不敏感,支持缩写和复数。
#当前时区
格式化
根据传入的占位符返回格式化后的日期。
将字符放在方括号中,即可原样返回而不被格式化替换 (例如, [MM
])。
dayjs().format()
// 默认返回的是 ISO8601 格式字符串 '2020-04-02T08:02:17-05:00'
dayjs('2019-01-25').format('[YYYYescape] YYYY-MM-DDTHH:mm:ssZ[Z]')
// 'YYYYescape 2019-01-25T00:00:00-02:00Z'
dayjs('2019-01-25').format('DD/MM/YYYY') // '25/01/2019'
支持的格式化占位符列表:
标识 | 示例 | 描述 |
YY | 18 | 年,两位数 |
YYYY | 2018 | 年,四位数 |
M | 1-12 | 月,从1开始 |
MM | 01-12 | 月,两位数 |
MMM | Jan-Dec | 月,英文缩写 |
MMMM | January-December | 月,英文全称 |
D | 1-31 | 日 |
DD | 01-31 | 日,两位数 |
d | 0-6 | 一周中的一天,星期天是 0 |
dd | Su-Sa | 最简写的星期几 |
ddd | Sun-Sat | 简写的星期几 |
dddd | Sunday-Saturday | 星期几,英文全称 |
H | 0-23 | 小时 |
HH | 00-23 | 小时,两位数 |
h | 1-12 | 小时, 12 小时制 |
hh | 01-12 | 小时, 12 小时制, 两位数 |
m | 0-59 | 分钟 |
mm | 00-59 | 分钟,两位数 |
s | 0-59 | 秒 |
ss | 00-59 | 秒,两位数 |
S | 0-9 | 毫秒(十),一位数 |
SS | 00-99 | 毫秒(百),两位数 |
SSS | 000-999 | 毫秒,三位数 |
Z | -05:00 | UTC 的偏移量,±HH:mm |
ZZ | -0500 | UTC 的偏移量,±HHmm |
A | AM / PM | 上/下午,大写 |
a | am / pm | 上/下午,小写 |
Do | 1st... 31st | 月份的日期与序号 |
... | ... | 其他格式 ( 依赖 AdvancedFormat 插件 ) |
Unix时间戳(毫秒)
返回当前实例的 UNIX 时间戳,13位数字,毫秒
dayjs('2019-01-25').valueOf() // 1548381600000
+dayjs(1548381600000) // 1548381600000
您应该使用 Unix Timestamp
来获取 UNIX 时间戳(10位 秒)
#Unix时间戳
返回当前实例的 UNIX 时间戳,10位数字,秒。
dayjs('2019-01-25').unix() // 1548381600
差异(Diff)
返回指定单位下两个日期时间之间的差异。
要获得以毫秒为单位的差异,请使用 dayjs#diff
。
const date1 = dayjs('2019-01-25')
const date2 = dayjs('2018-06-05')
date1.diff(date2) // 20214000000 默认单位是毫秒
要获取其他单位下的差异,则在第二个参数传入相应的单位。
const date1 = dayjs('2019-01-25')
date1.diff('2018-06-05', 'month') // 7
默认情况下 dayjs#diff
会将结果进位成整数。 如果要得到一个浮点数,将 true 作为第三个参数传入。
const date1 = dayjs('2019-01-25')
date1.diff('2018-06-05', 'month', true) // 7.645161290322581
获取月天数
获取当前月份包含的天数。
dayjs('2019-01-25').daysInMonth() // 31
#转Date
调用 dayjs#toDate
从 Day.js 对象中获取原生的 Date 对象
dayjs('2019-01-25').toDate()
#转数组
返回一个包含各个时间信息的 Array 。
注意
此功能依赖 ToArray 插件
dayjs.extend(toArray)
dayjs('2019-01-25').toArray() // [ 2019, 0, 25, 0, 0, 0, 0 ]
#转JSON
序列化为 ISO 8601 格式的字符串。
dayjs('2019-01-25').toJSON() // '2019-01-25T02:00:00.000Z'
#转ISO 8601字符串
返回一个 ISO 8601 格式的字符串。
dayjs('2019-01-25').toISOString() // '2019-01-25T02:00:00.000Z'
#转对象
返回包含时间信息的 Object。
注意
此功能依赖 ToObject 插件
dayjs.extend(toObject)
dayjs('2019-01-25').toObject()
/* { years: 2019,
months: 0,
date: 25,
hours: 0,
minutes: 0,
seconds: 0,
milliseconds: 0 } */
#转字符串
返回包含时间信息的 string 。
dayjs('2019-01-25').toString() // 'Fri, 25 Jan 2019 02:00:00 GMT'