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)

获取 ISO 周年 (opens new window)

注意

此功能依赖 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

季度,依赖 QuarterOfYear 插件

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,依赖 QuarterOfYear 插件

year

y

今年一月1日上午 00:00

week

w

本周的第一天上午 00:00

isoWeek

本周的第一天上午 00:00 (根据 ISO 8601) , ( 依赖 IsoWeek 插件 )

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'