解析和操作完成后,您需要一些方法来显示Day.js对象

# 格式化

根据传入的令牌字符串获取格式化的日期。

要对字符进行转义,请将它们括在方括号中(例如[MM])。

dayjs().format() 
// current date in ISO8601, without fraction seconds e.g. '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 月,英文缩写
D 1-31
DD 01-31 日,两位数
H 0-23 24小时
HH 00-23 24小时,两位数
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偏移
ZZ -0500 UTC偏移,两位数
A AM / PM 上/下午,大写
a am / pm 上/下午,小写
Do 1st... 31st 月份的日期与序号

更多可用格式Q Do k kk X X…需要使用插件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().fromNow() // 2 years ago

如果传递true,则可以获得不带后缀的值。

dayjs.extend(relativeTime)

dayjs().fromNow() // 2 years ago
dayjs().fromNow(true) // 2 years

范围列表

基字符串由当前语言环境本地化can be customized。时间四舍五入到最接近的秒。

范围 输出结果
0 to 44 seconds s 几秒钟前
45 to 89 seconds m 一分钟前
90 seconds to 44 minutes mm 2分钟前…44分钟前
45 to 89 minutes h 一个小时前
90 minutes to 21 hours hh 2小时前…21小时前
22 to 35 hours d 一天前
36 hours to 25 days dd 两天前…25天前
26 to 45 days M 一个月前
46 days to 10 months MM 两个月前…10个月前
11 months to 17months y 一年前
18 months+ yy 两年前…20年前

# 指定时间以前

返回指定时间的相对时间字符串。

注意

此功能依赖RelativeTime插件

dayjs.extend(relativeTime)

var a = dayjs()
var b = dayjs('1990-01-01')

a.from(b) // 2 years ago

如果传递true,则可以获得不带后缀的值。

dayjs.extend(relativeTime)

var a = dayjs()
a.from('1990-01-01') // 2 years ago
a.from('1990-01-01', true) // 2 years

# 时间到当前

返回到现在的相对时间字符串。

注意

此功能依赖RelativeTime插件

dayjs.extend(relativeTime)

dayjs().toNow() // in 2 years

如果传递true,则可以获得不带后缀的值。

dayjs.extend(relativeTime)

dayjs().toNow() // in 2 years
dayjs().toNow(true) // 2 years

# 到指定时间

返回指定时间的相对时间字符串。

注意

此功能依赖RelativeTime插件

dayjs.extend(relativeTime)

var a = dayjs()
var b = dayjs('1990-01-01')

a.to(b) // in 2 years

如果传递true,则可以获得不带后缀的值。

dayjs.extend(relativeTime)

var a = dayjs()
a.to('1990-01-01') // in 2 years
a.to('1990-01-01', true) // 2 years

# 日历时间

日历时间显示相对于给定引用时间(默认为现在)的时间,但与dayjs#fromNow略有不同。

注意

此功能依赖Calendar插件

dayjs.extend(Calendar)

dayjs().calendar()
dayjs().calendar(dayjs('2008-01-01'))
Last week (lastWeek) 上周一凌晨2:30
The day before (lastDay) 昨天凌晨两点半
The same day (sameDay) 今天凌晨2:30
The next day (nextDay) 明天凌晨两点半
The next week (nextWeek) 周日凌晨2:30
Everything else (sameElse) 其他(同理)

这些字符串是本地化的,可以自定义。

您还可以将指定日历输出格式作为第二个参数传递。

要对字符进行转义,请将它们括在方括号中(例如[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 default milliseconds

要获得另一度量单位中的差异,将该度量作为第二个参数传递。

const date1 = dayjs('2019-01-25')
date1.diff('2018-06-05', 'month') // 7

单位不区分大小写,支持复数和缩写形式。

单位 缩写 描述
week w
day d 星期(星期日0,星期六6)
month M 月份(0-11)
quarter Q 依赖QuarterOfYear插件
year y
hour h 小时
minute m 分钟
second s
millisecond ms 毫秒

默认情况下,dayjs#diff会将结果截断为小数点后零,返回一个整数。如果你想要一个浮点数,传递true作为第三个参数。

const date1 = dayjs('2019-01-25')
date1.diff('2018-06-05', 'month', true) // 7.645161290322581

# Unix时间戳(毫秒)

这将返回Day.js对象在Unix纪元以来的毫秒数。

dayjs('2019-01-25').valueOf() // 1548381600000
+dayjs(1548381600000) // 1548381600000

要从Day.js对象获取Unix时间戳(从epoch开始的秒数),您应该使用Unix时间戳。

# Unix时间戳

这将返回Day.js对象的Unix时间戳(自Unix纪元以来的秒数)。

dayjs('2019-01-25').unix() // 1548381600

此值按最接近的秒排列,不包含毫秒组件。

# 获取月天数

获取当前月份的天数。

dayjs('2019-01-25').daysInMonth() // 31

# 转Date

要获得从Day.js对象解析的本地日期对象的副本,请使用dayjs#toDate

dayjs('2019-01-25').toDate()

# 转数组

注意

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

# 转对象

返回具有日期属性的对象。

注意

此功能依赖ToObject插件

dayjs.extend(toObject)

dayjs('2019-01-25').toObject()
/* { years: 2019,
     months: 0,
     date: 25,
     hours: 0,
     minutes: 0,
     seconds: 0,
     milliseconds: 0 } */

# 转字符串

返回日期的字符串表示形式。

dayjs('2019-01-25').toString() // 'Fri, 25 Jan 2019 02:00:00 GMT'
Last Updated: 1/19/2021, 11:00:24 PM