# 实例
代替修改本地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 (opens new window)格式解析给定字符串并返回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
所有可用解析标记的列表
标识 | 示例 | 描述 |
---|---|---|
YY | 20 | 年,两位数 |
YYYY | 2022 | 年,四位数 |
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 世界统一时间
默认情况下,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#utc
或dayjs#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()