# 实例

代替修改本地Date.prototype,Day.js对Date对象进行了封装,只需要调用Dayjs()即可

Day.js对象是不可变的,也就是说,以某种方式改变Day.js对象的所有API操作都将返回它的一个新实例。

# 默认值

不带参数调用dayjs()将返回一个新的Day.js对象,其中包含当前日期和时间。

var now = dayjs()

这基本上与调用dayjs(new Date())相同。

Day.js将dayjs(undefined)处理为dayjs() ,因为该函数参数在未传入时默认为undefined。

Day.js将dayjs(null)视为无效输入。

# 字符串

ISO 8601格式解析给定字符串并返回day.js对象实例。

dayjs('2018-04-04T16:00:00.000Z')

注意

为了在解析除ISO 8601字符串之外的任何字符串时得到一致的结果,应该使用String + Format。

# 字符串+格式

如果您知道输入字符串的格式,就可以使用它来解析日期。

注意

此功能依赖CustomParseFormat插件

dayjs.extend(customParseFormat)
dayjs("12-25-1995", "MM-DD-YYYY")

将locale为第三个参数传递,以解析能够识别区域设置的日期时间字符串。

require('dayjs/locale/es')
dayjs('2018 Enero 15', 'YYYY MMMM DD', 'es')

您可以为最后一个参数指定一个布尔值,以便使用严格解析。严格的解析要求格式和输入精确匹配,包括分隔符。

dayjs('1970-00-00', 'YYYY-MM-DD').isValid() // true
dayjs('1970-00-00', 'YYYY-MM-DD', true).isValid() // false
dayjs('1970-00-00', 'YYYY-MM-DD', 'es', true).isValid() // false

如果您不知道输入字符串的确切格式,但知道它可以是多种格式中的一种,那么可以使用格式数组。

dayjs("12-25-2001", ["YYYY", "YYYY-MM-DD"], 'es', true);

所有可用解析标记的列表

标识 示例 描述
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 月份的日期与序号

# Unix时间戳(毫秒)

通过一个毫秒数的整数值来创建Day.js

dayjs(1318781876406)

注意

传递的参数必须是一个数字

# Unix时间戳(秒)

从Unix时间戳创建Day.js对象。

dayjs.unix(1318781876)

这种方式最终是通过 dayjs(timestamp * 1000) 去实现的,所以可以加小数部分

dayjs.unix(1318781876.721)

# 日期对象

通过Date对象创建Day.js

var d = new Date(2018, 8, 18)
var day = dayjs(d)

这将克隆Date对象。对Date的进一步更改不会影响Day.js对象,反之亦然。

# UTC

世界调整时间(Universal Time Coordinated)

默认情况下,Day.js以本地时间解析和显示。

如果想用UTC解析或显示日期时间,可以使用dayjs.utc()代替dayjs()。 在UTC模式下,所有显示方法将以UTC时间而不是本地时间显示。

注意

此功能依赖UTC插件

dayjs.extend(utc)

// default local time
dayjs().format() //2019-03-06T08:00:00+08:00
// UTC mode
dayjs.utc().format() // 2019-03-06T00:00:00Z

此外,在UTC模式下,所有的getter和setter都将在内部使用Date#getUTC*Date#setUTC*方法,而不是Date#get*Date#set*方法。

dayjs.utc().seconds(30).valueOf()// => new Date().setUTCSeconds(30)
dayjs.utc().seconds()// => new Date().getUTCSeconds()

要从UTC切换到本地时间,您可以使用dayjs#utcdayjs#local

# 克隆

所有Day.js对象是不可变的。如果需要的话,dayjs#clone仍然可以创建当前对象的一个克隆。

var a = dayjs()
var b = a.clone()
// a and b are two separate Day.js object

在Day.js对象上调用dayjs()也会克隆它。

var a = dayjs()
var b = dayjs(a)

# 验证

返回一个布尔值,指示Day.js对象是否包含有效日期。

dayjs().isValid()
Last Updated: 1/22/2021, 11:28:39 PM