当解析和操作完成后,您需要一些方式来展示 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 )
})

# 差异

返回指定单位下两个日期时间之间的差异。

要获得以毫秒为单位的差异,请使用 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

支持的单位列表:

各个传入的单位对大小写不敏感,支持缩写和复数。 请注意,缩写是区分大小写的。

单位 缩写 描述
week w
day d 星期(星期日0,星期六6)
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'

# 转IOS 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'
Last Updated: 8/20/2022, 9:47:39 PM