dayJs 轻量库

Moment.js 的 2kB 轻量化方案,拥有同样强大的 API;运行在Nodejs及浏览器端

特点

大小: 2K,下载、解析和执行更少的 JavaScript,为您的代码留出更多时间。
简易: Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样。
如果您曾经用过 Moment.js, 那么您已经知道如何使用 Day.js 。
不可变的: 所有的 API 操作都将返回一个新的 Dayjs 对象。这种设计能避免 bug 产生,节约调试时间。
国际化: Day.js 对国际化支持良好。但除非手动加载,多国语言默认是不会被打包到工程里的

用法

获取时间或者设置时间

  1. 获取当前时间: var now = dayjs() | dayjs(new Date())
  2. 日期格式化: dayjs(“12-25-1995”, “MM-DD-YYYY”) | 输入 | 例子 | 详情 | | —- | —- | —- | | YY | 18 | 两位数的年份 | | YYYY | 2018 | 四位数的年份 | | M | 1-12 | 月份,从 1 开始 | | MM | 01-12 | 月份,两位数 | | MMM | Jan-Dec | 缩写的月份名称 | | MMMM | January-December | 完整的月份名称 | | D | 1-31 | 月份里的一天 | | DD | 01-31 | 月份里的一天,两位数 | | 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 的偏移量 | | ZZ | -0500 | UTC 的偏移量,两位数 | | A | AM PM | 上午 下午 大写 | | a | am pm | 上午 下午 小写 | | Do | 1st… 31st | 带序数词的月份里的一天 |
  1. 时间戳(毫秒)转化时间: dayjs(1318781876406), 传入参数必须是数字
  2. 时间戳(秒)转化时间: dayjs.unix(1318781876) | dayjs(timestamp 1000); timestamp1000:秒转化成毫秒
  3. UTC

默认情况下,Day.js 会把时间解析成本地时间。
如果想使用 UTC 时间,您可以调用 dayjs.utc() 而不是 dayjs()
在 UTC 模式下,所有显示方法将会显示 UTC 时间而非本地时间。

  1. 使用本功能需先配置 UTC 插件,才能正常运行 https://day.js.org/docs/zh-CN/plugin/utc
  2. dayjs.extend(utc)
  3. // 默认是当地时间
  4. dayjs().format() //2019-03-06T08:00:00+08:00
  5. // UTC 时间
  6. dayjs.utc().format() // 2019-03-06T00:00:00Z
  1. 验证是否是一个日期格式: dayjs().isValid()
  2. 获取或设置毫秒, 传入0到999的数字。 如果超出这个范围,它会进位到秒
  1. dayjs().millisecond()
  2. dayjs().millisecond(1)
  1. 获取或设置秒, 传入0到59的数字。 如果超出这个范围,它会进位到分钟。
  1. dayjs().second()
  2. dayjs().second(1)
  1. 获取或设置分钟, 传入0到59的数字。 如果超出这个范围,它会进位到小时。
  1. dayjs().minute()
  2. dayjs().minute(59)
  1. 获取或设置小时, 传入0到23的数字。 如果超出这个范围,它会进位到天数。
  1. dayjs().hour()
  2. dayjs().hour(12)
  1. 获取或设置月份里的日期, 接受1到31的数字。 如果超出这个范围,它会进位到月份。
  1. dayjs().date()
  2. dayjs().date(1)
  1. 获取或设置月份。
  1. dayjs().month()
  2. dayjs().month(0)
  1. 获取或设置季度


  1. 使用本功能需先配置 QuarterOfYear 插件,才能正常运行
  2. dayjs.extend(quarterOfYear)
  3. dayjs('2010-04-01').quarter() // 2
  4. dayjs('2010-04-01').quarter(2)
  1. 获取或设置年份。
  1. dayjs().year()
  2. dayjs().year(2000)

对时间操作

  1. 给当前 Day.js 对象增加时间,并返回一个对应的新实例
  1. dayjs().add(7, 'day')
  2. 各个传入的单位对大小写不敏感,支持缩写和复数。
单位 缩写 详情
date D Date of Month
day d 星期几 (星期天0,星期六6)
week w Week of Year
month M 月份 (一月 0, 十二月 11)
quarter Q 季度 ( 依赖 QuarterOfYear 插件 )
year y Year
hour h Hour
minute m Minute
second s Second
millisecond ms Millisecond
  1. 给当前 Day.js 对象减少时间,并返回一个对应的新实例。各个传入的单位对大小写不敏感,支持缩写和复数。
  1. dayjs().subtract(7, 'year')

支持单位如上Add操作

  1. 返回一个在当前时区模式下的 Day.js 对象。
  1. 使用本功能需先配置 UTC 插件,才能正常运行
  2. dayjs.extend(utc)
  3. var a = dayjs.utc()
  4. a.format() // 2019-03-06T00:00:00Z
  5. a.local().format() //2019-03-06T08:00:00+08:00
  1. 返回一个在 UTC 模式下的 Day.js 对象。
  1. 使用本功能需先配置 UTC 插件,才能正常运行
  2. dayjs.extend(utc)
  3. var a = dayjs()
  4. a.format() //2019-03-06T08:00:00+08:00
  5. a.utc().format() // 2019-03-06T00:00:00Z

更多高级功能可参考对应的dayJs官方API

MomentJs