dayjs中文官网
Day.js: Moment.js 的 2kB 轻量化方案,拥有同样强大的 API

解析

// 解析 param 返回一个day.js 对象,如下图:
dayjs()
// 使用 .format()  可转成字符串,否则返回的都是  dayjs 对象

// "2018-04-05T00:00:00+08:00"
dayjs('2018-04-04T16:00:00.000Z').format()

// "1995-12-25T00:00:00+08:00"
dayjs("12-25-1995", "MM-DD-YYYY").format()

// 多种可能格式可以使用数组
dayjs("12-25-2001", ["YYYY", "YYYY-MM-DD"], 'es', true).format()

// 支持传入 秒 和 毫秒
dayjs(1318781876406)

// 传入 Date 对象
dayjs(new Date())

// UTC 时间(默认是本地时间)
dayjs.utc().format()

dayjs()

输入例子详情
YY01两位数的年份
YYYY2001四位数的年份
M1-12月份,从 1 开始
MM01-12月份,两位数
MMMJan-Dec缩写的月份名称
MMMMJanuary-December完整的月份名称
D1-31月份里的一天
DD01-31月份里的一天,两位数
H0-23小时
HH00-23小时,两位数
h1-12小时, 12 小时制
hh01-12小时, 12 小时制, 两位数
m0-59分钟
mm00-59分钟,两位数
s0-59
ss00-59秒 两位数
S0-9毫秒,一位数
SS00-99毫秒,两位数
SSS000-999毫秒,三位数
Z-05:00UTC 的偏移量
ZZ-0500UTC 的偏移量,两位数
AAM PM上午 下午 大写
aam pm上午 下午 小写
Do1st… 31st带序数词的月份里的一天
X1410715640.579Unix 时间戳
x1410715640579Unix 时间戳

取值/赋值

// 设置&获取 dayjs对象 秒数
dayjs().second(30)
// 获取当前秒数  30
dayjs().second()
eg:dayjs(dayjs().second(32)).second() => 32

// 设置&获取毫秒数 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)

// 设置&获取星期(0~6,其中 0 是周日)
dayjs().day()
dayjs().day(0)

// 设置&获取年份里的第几天(1~366)
dayjs.extend(dayOfYear)
dayjs('2010-01-01').dayOfYear() // 1
dayjs('2010-01-01').dayOfYear(365) // 2010-12-31

// 获取或设置该年的第几周
dayjs.extend(weekOfYear)
dayjs('2018-07-27').week() // 26
dayjs('2018-06-27').week(5) // 设置周

// 获取或设置月份(0~11)
dayjs().month()
dayjs().month(0)

// 获取或设置季度
dayjs.extend(quarterOfYear)
dayjs('2010-04-01').quarter() // 2
dayjs('2010-04-01').quarter(2)

// 获取或设置年份
dayjs().year()
dayjs().year(2000)

// 从 Day.js 对象中获取相应信息的 getter
// 各个传入的单位对大小写不敏感,支持缩写和复数。 请注意,缩写是区分大小写的。
dayjs().get('year')
dayjs().get('month') // start 0
dayjs().get('date')
dayjs().get('hour')
dayjs().get('minute')
dayjs().get('second')
dayjs().get('millisecond')

// 通用的 setter,两个参数分别是要更新的单位和数值,调用后会返回一个修改后的新实例
dayjs().set('date', 1)
dayjs().set('month', 3) // 四月
dayjs().set('second', 30)

// 返回传入的 Day.js 实例中的最大的 (即最靠近未来的)。 它接受传入多个 Day.js实例或一个数组
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实例或一个数组
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')])
单位缩写详情
dateD月份里的日期
dayd星期几 (星期天0,星期六6)
monthM月份 (一月 0, 十二月 11)
yeary年份
hourh小时
minutem分钟
seconds
millisecondms毫秒

操作

// Day.js 支持像这样的链式调用
dayjs('2019-01-25').add(1, 'day').subtract(1, 'year').year(2009).toString()

// 返回复制的 Day.js 对象,并设置到一个时间的开始
dayjs().startOf('year')

// 返回复制的 Day.js 对象,并设置到一个时间的末尾
dayjs().endOf('month')
单位缩写详情
yeary今年一月1日上午 00:00
quarterQ本季度第一个月1日上午 00:00 ( 依赖 QuarterOfYear 插件 )
monthM本月1日上午 00:00
weekw本周的第一天上午 00:00
isoWeek本周的第一天上午 00:00 (根据 ISO 8601) ( 依赖 IsoWeek 插件 )
dateD当天 00:00
dayd当天 00:00
hourh当前时间,0 分、0 秒、0 毫秒
minutem当前时间,0 秒、0 毫秒
seconds当前时间,0 毫秒

显示(重要)

// 根据传入的占位符返回格式化后的日期
// 将字符放在方括号中,即可原样返回而不被格式化替换 (例如, [MM])。
dayjs('2019-01-25').format('DD/MM/YYYY') // '25/01/2019'

// 返回现在到当前实例的相对时间
dayjs.extend(relativeTime)
dayjs('1999-01-01').fromNow() // 22 年前

// 返回 X 到当前实例的相对时间
// 如果传入 true,则可以获得不带后缀的值(1年)
dayjs.extend(relativeTime)
let a = dayjs('2000-01-01')
dayjs('1999-01-01').from(a) // 1 年前

// 返回当前实例到现在的相对时间
dayjs.extend(relativeTime)
dayjs('1999-01-01').toNow() // 22 年后

// 返回当前实例到 X 的相对时间
dayjs.extend(relativeTime)
var a = dayjs('2000-01-01')
dayjs('1999-01-01').to(a) // 1 年后

// 日历时间显示了距离给定时间 (默认为现在) 的相对时间,但与 dayjs#fromnow 略有不同
dayjs.extend(calendar)
dayjs().calendar()
dayjs().calendar(dayjs('2008-01-01'))

// 返回指定单位下两个日期时间之间的差异
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

// 返回当前实例的 UNIX 时间戳,13位数字,毫秒
dayjs('2019-01-25').valueOf() // 1548381600000
+dayjs(1548381600000) // 1548381600000
// 返回当前实例的 UNIX 时间戳,10位数字,秒。
dayjs('2019-01-25').unix() // 1548381600
// 获取当前月份包含的天数
dayjs('2019-01-25').daysInMonth() // 31
// 调用 dayjs#toDate 从 Day.js 对象中获取原生的 Date 对象
dayjs('2019-01-25').toDate()
占位符输出详情
YY18两位数的年份
YYYY2018四位数的年份
M1-12月份,从 1 开始
MM01-12月份,两位数
MMMJan-Dec缩写的月份名称
MMMMJanuary-December完整的月份名称
D1-31月份里的一天
DD01-31月份里的一天,两位数
d0-6一周中的一天,星期天是 0
ddSu-Sa最简写的星期几
dddSun-Sat简写的星期几
ddddSunday-Saturday星期几
H0-23小时
HH00-23小时,两位数
h1-12小时, 12 小时制
hh01-12小时, 12 小时制, 两位数
m0-59分钟
mm00-59分钟,两位数
s0-59
ss00-59秒 两位数
SSS000-999毫秒 三位数
Z+05:00UTC 的偏移量,±HH:mm
ZZ+0500UTC 的偏移量,±HHmm
AAM PM
aam pm
其他格式 ( 依赖 AdvancedFormat 插件 )
范围键值示例输出
0 到 44 秒s几秒前
45 到 89 秒m1 分钟前
90 秒 到 44 分mm2 分钟前 … 44 分钟前
45 到 89 分h1 小时前
90 分 到 21 小时hh2 小时前 … 21 小时前
22 到 35 小时d1 天前
36 小时 到 25 天dd2 天前 … 25 天前
26 到 45 天M1 个月前
46 天 到 10 月MM2 个月前 … 10 个月前
11 月 到 17 月y1 年前
18 月以上yy2 年前 … 20 年前

查询

// 这表示 Day.js 对象是否在另一个提供的日期时间之前
dayjs().isBefore(dayjs('2011-01-01')) // 默认毫秒
// 如果想使用除了毫秒以外的单位进行比较,则将单位作为第二个参数传入
dayjs().isBefore('2011-01-01', 'year')

// 其他
dayjs().isSame('2011-01-01', 'year')
dayjs().isAfter('2011-01-01', 'year')

dayjs.extend(isBetween)
dayjs('2010-10-20').isBetween('2010-10-19', dayjs('2010-10-25')) 
// 默认毫秒

插件

var AdvancedFormat = require('dayjs/plugin/advancedFormat')
// import AdvancedFormat from 'dayjs/plugin/advancedFormat' // ES 2015

dayjs.extend(AdvancedFormat) // use plugin
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐