# 显示
当解析和操作完成后,您需要一些方式来展示 Day.js 对象。
# 格式化
根据传入的占位符返回格式化后的日期。
将字符放在方括号中,即可原样返回而不被格式化替换 (例如, [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 插件 ) |
本地化格式
在不同的本地化配置下,有一些不同的本地化格式可以使用。
注意
此功能依赖 LocalizedFormat 插件
dayjs.extend(LocalizedFormat)
dayjs().format('L LT')
支持的本地化格式列表:
占位符 | 英语语言 | 输出结果 |
---|---|---|
LT | h:mm A | 8:02 PM |
LTS | h:mm:ss A | 8:02:18 PM |
L | MM/DD/YYYY | 08/16/2018 |
LL | MMMM D, YYYY | August 16, 2018 |
LLL | MMMM D, YYYY h:mm A | August 16, 2018 8:02 PM |
LLLL | dddd, MMMM D, YYYY h:mm A | Thursday, August 16, 2018 8:02 PM |
l | M/D/YYYY | 8/16/2018 |
ll | MMM D, YYYY | Aug 16, 2018 |
lll | MMM D, YYYY h:mm A | Aug 16, 2018 8:02 PM |
llll | ddd, MMM D, YYYY h:mm A | Thu, Aug 16, 2018 8:02 PM |
# 相对当前时间(前)
返回现在到当前实例的相对时间。
注意
此功能依赖 RelativeTime 插件
dayjs.extend(relativeTime)
dayjs('1999-01-01').fromNow() // 22 年前
如果传入 true,则可以获得不带后缀的值。
dayjs.extend(relativeTime)
dayjs('1999-01-01').fromNow(true) // 22 年
时间范围划分标准:
表格里的值是由语言配置决定的,并且 可以自定义输出内容。 时间会舍入到最接近的秒数。
范围 | 键值 | 输出结果 |
---|---|---|
0 to 44 seconds | s | 几秒前 |
45 to 89 seconds | m | 1 分钟前 |
90 seconds to 44 minutes | mm | 2 分钟前 ... 44 分钟前 |
45 to 89 minutes | h | 1 小时前 |
90 minutes to 21 hours | hh | 2 小时前 ... 21 小时前 |
22 to 35 hours | d | 1 天前 |
36 hours to 25 days | dd | 2 天前 ... 25 天前 |
26 to 45 days | M | 1 个月前 |
46 days to 10 months | MM | 2 个月前 ... 10 个月前 |
11 months to 17months | y | 1 年前 |
18 months+ | yy | 2 年前 ... 20 年前 |
# 相对指定时间(前)
返回 X 到当前实例的相对时间。
注意
此功能依赖 RelativeTime 插件
dayjs.extend(relativeTime)
var a = dayjs('2000-01-01')
dayjs('1999-01-01').from(a) // 1 年前
如果传入 true,则可以获得不带后缀的值。
dayjs.extend(relativeTime)
var a = dayjs('2000-01-01')
dayjs('1999-01-01').from(a, true) // 1 年
# 相对当前时间(后)
返回当前实例到现在的相对时间。
注意
此功能依赖 RelativeTime 插件
dayjs.extend(relativeTime)
dayjs('1999-01-01').toNow() // 22 年后
如果传入 true,则可以获得不带后缀的值。
dayjs.extend(relativeTime)
dayjs('1999-01-01').toNow(true) // 22 年
# 相对指定时间(后)
返回当前实例到 X 的相对时间。
注意
此功能依赖 RelativeTime 插件
dayjs.extend(relativeTime)
var a = dayjs('2000-01-01')
dayjs('1999-01-01').to(a) // 1 年后
如果传入 true,则可以获得不带后缀的值。
dayjs.extend(relativeTime)
var a = dayjs('2000-01-01')
dayjs('1999-01-01').to(a, true) // 1 年
# 日历时间
日历时间显示了距离给定时间 (默认为现在) 的相对时间,但与 dayjs#fromnow
略有不同。
注意
此功能依赖 Calendar 插件
dayjs.extend(calendar)
dayjs().calendar()
dayjs().calendar(dayjs('2008-01-01'))
键 | 值 |
---|---|
上个星期 (lastWeek) | 上星期一 2:30 |
前一天 (lastDay) | 昨天 2:30 |
同一天 (sameDay) | 今天 2:30 |
下一天 (nextDay) | 明天 2:30 |
下个星期 (nextWeek) | 星期日 2:30 |
其他 (sameElse) | 7/10/2011 |
表格里的值是由语言配置决定的,并且 可以自定义输出内容。
您也可以通过第二个参数传入指定日历输出格式。
将字符放在方括号中,即可原样返回而不被格式化替换 (例如, [Today
])。
dayjs().calendar(null, {
sameDay: '[Today at] h:mm A', // The same day ( Today at 2:30 AM )
nextDay: '[Tomorrow]', // The next day ( Tomorrow at 2:30 AM )
nextWeek: 'dddd', // The next week ( Sunday at 2:30 AM )
lastDay: '[Yesterday]', // The day before ( Yesterday at 2:30 AM )
lastWeek: '[Last] dddd', // Last week ( Last Monday at 2:30 AM )
sameElse: 'DD/MM/YYYY' // Everything else ( 7/10/2011 )
})
# 差异(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().diff(dayjs(1718258944185), 'day')
支持的单位列表:
各个传入的单位对大小写不敏感,支持缩写和复数。 请注意,缩写是区分大小写的。
单位 | 缩写 | 描述 |
---|---|---|
week | w | 周(Week of Year) |
day | d | 日 |
month | M | 月份 (一月 0, 十二月 11) |
quarter | Q | 季度,依赖 QuarterOfYear 插件 |
year | y | 年 |
hour | h | 小时 |
minute | m | 分钟 |
second | s | 秒 |
millisecond | ms | 毫秒 |
# 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
此值不包含毫秒信息,会进位到秒。
# 获取月天数
获取当前月份包含的天数。
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'