# dayjs
[官网](https://dayjs.gitee.io/zh-CN/)
Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样. 如果您曾经用过 Moment.js, 那么您已经知道如何使用 Day.js
### format()方法
```js
dayjs().format("YYYY-MM-DD hh:mm:ss a") // 2021-04-13 01:48:00 pm
dayjs().format("YYYY-MM-DD HH:mm:ss") // 2021-04-13 13:48:00
dayjs().format("YY-M-D H:m:s") // 21-4-13 13:48:0
dayjs().format("YY-M-D h:m:s a") // 21-4-13 1:48:0 pm
```
| 占位符 | 输出 | 详情 |
| --- | --- | --- |
| `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 | 秒 两位数 |
| `SSS` | 000-999 | 毫秒 三位数 |
| `Z` | +05:00 | UTC 的偏移量,±HH:mm |
| `ZZ` | +0500 | UTC 的偏移量,±HHmm |
| `A` | AM PM | |
| `a` | am pm |
## 插件
```js
// 加载语言文件
require("dayjs/locale/zh-cn");
dayjs.locale('zh-cn') // 全局使用
dayjs().locale('zh-cn').format() // 当前实例使用
varcustomParseFormat = require("dayjs/plugin/customParseFormat");
dayjs.extend(customParseFormat);
varrelativeTime = require("dayjs/plugin/relativeTime");
dayjs.extend(relativeTime);
```
### Time from now
返回现在到当前实例的相对时间。
```js
dayjs.extend(relativeTime)
dayjs('1999-01-01').fromNow() // 22 年前
dayjs.extend(relativeTime)
dayjs('1999-01-01').fromNow(true) // 22 年
dayjs.extend(relativeTime)
var a = dayjs('2000-01-01')
dayjs('1999-01-01').from(a) // 1 年前
```
### Time to now
返回当前实例到现在的相对时间。
```js
dayjs.extend(relativeTime)
dayjs('1999-01-01').toNow() // 22 年后
dayjs.extend(relativeTime)
dayjs('1999-01-01').toNow(true) // 22 年
dayjs.extend(relativeTime)
var a = dayjs('2000-01-01')
dayjs('1999-01-01').to(a) // 1 年后
```
| 范围 | 键值 | 示例输出 |
| --- | --- | --- |
| 0 到 44 秒 | s | 几秒前 |
| 45 到 89 秒 | m | 1 分钟前 |
| 90 秒 到 44 分 | mm | 2 分钟前 ... 44 分钟前 |
| 45 到 89 分 | h | 1 小时前 |
| 90 分 到 21 小时 | hh | 2 小时前 ... 21 小时前 |
| 22 到 35 小时 | d | 1 天前 |
| 36 小时 到 25 天 | dd | 2 天前 ... 25 天前 |
| 26 到 45 天 | M | 1 个月前 |
| 46 天 到 10 月 | MM | 2 个月前 ... 10 个月前 |
| 11 月 到 17 月 | y | 1 年前 |
| 18 月以上 | yy | 2 年前 ... 20 年前 |
### Days in Month
获取当前月份包含的天数。
~~~js
dayjs('2019-01-25').daysInMonth() // 31
~~~
### As Object
返回包含时间信息的 Object。
```
dayjs.extend(toObject)
dayjs('2019-01-25').toObject()
/* {
years: 2019,
months: 0,
date: 25,
hours: 0,
minutes: 0,
seconds: 0,
milliseconds: 0
}
*/
```
### IsToday
IsToday 增加了`.isToday()`API 来判断当前 Day.js 对象是否是今天。
~~~js
var isToday = require('dayjs/plugin/isToday')
dayjs.extend(isToday)
dayjs().isToday() // true
~~~
### IsTomorrow
IsTomorrow 增加了`.isTomorrow()`API 来判断当前 Day.js 对象是否是明天。
~~~js
var isTomorrow = require('dayjs/plugin/isTomorrow')
dayjs.extend(isTomorrow)
dayjs().add(1, 'day').isTomorrow() // true
~~~
### IsYesterday
IsYesterday 增加了`.isYesterday()`API 来判断当前 Day.js 对象是否是昨天。
~~~js
var isYesterday = require('dayjs/plugin/isYesterday')
dayjs.extend(isYesterday)
dayjs().add(-1, 'day').isYesterday() // true
~~~
### IsoWeeksInYear
IsoWeeksInYear 增加了`.isoWeeksInYear()`API 返回一个`number`来得到依据 ISO week 标准一年中有几周
> 使用本功能需先配置[`IsLeapYear`](https://dayjs.gitee.io/docs/zh-CN/plugin/is-leap-year)插件,才能正常运行
~~~javascript
var isoWeeksInYear = require('dayjs/plugin/isoWeeksInYear')
var isLeapYear = require('dayjs/plugin/isLeapYear') // dependent on isLeapYear plugin
dayjs.extend(isoWeeksInYear)
dayjs.extend(isLeapYear)
dayjs('2004-01-01').isoWeeksInYear() // 53
dayjs('2005-01-01').isoWeeksInYear() // 52
~~~
### Add
返回**增加**一定时间的复制的 Day.js 对象。
~~~js
dayjs().add(7, 'day')
~~~
各个传入的单位对大小写不敏感,支持缩写和复数。 请注意,缩写是区分大小写的。
支持的单位列表
| 单位 | 缩写 | 详情 |
| --- | --- | --- |
| `day` | `d` | 星期几 (星期天0,星期六6) |
| `week` | `w` | Week of Year |
| `month` | `M` | 月份 (一月 0, 十二月 11) |
| `quarter` | `Q` | 季度 ( 依赖[`QuarterOfYear`](https://dayjs.gitee.io/docs/zh-CN/plugin/quarter-of-year)插件 ) |
| `year` | `y` | Year |
| `hour` | `h` | Hour |
| `minute` | `m` | Minute |
| `second` | `s` | Second |
| `millisecond` | `ms` | Millisecond |
或者,也可以给 Day.js 对象增加一个[持续时间](https://dayjs.gitee.io/docs/zh-CN/durations/durations)。
~~~js
dayjs().add(dayjs.duration({'days' : 1}))
~~~
### Subtract (用法通Add)
返回**减去**一定时间的复制的 Day.js 对象。
~~~js
dayjs().subtract(7, 'year')
~~~
各个传入的单位对大小写不敏感,支持缩写和复数。