# 一、功能

**介绍**：

处理日期和时间，主要包括格式化日期和时间、一些在开发中一些经常对时间处理和判断、公历日期转换农历日期、 解决C端苹果时间显示兼容问题【实例化参数为时间戳、`-`横杠、`/`斜杠日期字符串】

**使用说明**：

​	如果大家在使用过程遇到个别方法有`BUG`, 或者在开发过程中有比较通用的方法、经常用的案例不支持可以在https://gitee.com/wanghuilife/wdx-date 仓库评论留言, 会及时修改`BUG` 

**安装：**

```shell
npm install wh-date
```

**实例化方式**：

```javascript
const Wdate = require('wh-date')

const newData = new Wdate(); // 默认本地时间
const newData = new Wdate(milliseconds/seconds);
const newData = new Wdate(dateString);
```

**用法**：

```javascript
const Wdate = require('wh-date')

const newData = new Wdate() // 系统当前时间
const newData = new Wdate('2022-01-26 10:00:00') 
const newData = new Wdate('2022-01-26') // 日期格式1
const newData = new Wdate('2022-01-26 10:10') // 日期格式2
const newData = new Wdate('2022-01-26 10:10:01') // 日期格式3
const newData = new Wdate('2022/01/26 10:10:01') // 日期格式4
const newData = new Wdate(1645586844) // 时间戳10位
const newData = new Wdate(1645586880682) // 时间戳13位
```

`注意`： C端苹果手机兼容性问题，方式三：仅支持参数为`-`横杠`2022-02-25 10:02:10`、`/`斜杠`2022/02/25 10:02:10`表示日期方法

***format格式化日期字符说明***

 传入字符串，更新指定字符串替换相应的值进行显示

| 参数字符串 | 说明          |
| ---------- | ------------- |
| yy         | 年            |
| MM         | 月            |
| dd         | 天            |
| HH         | 小时 24小时制 |
| hh         | 小时 12小时制 |
| mm         | 分钟          |
| ss         | 秒            |
| ww         | 星期          |



# 二、方法列表



| 方法               | 功能说明                                                     | 版本   |
| ------------------ | ------------------------------------------------------------ | ------ |
| **常规方法**       |                                                              |        |
| getYear            | 返回年份                                                     |        |
| getMonth           | 返回月份（1-12）                                             |        |
| getDate            | 返回月中的第几天（1-31）                                     |        |
| getHours           | 返回小时(1-12/1-24小时制)                                    |        |
| getMinutes         | 返回分钟（1-59）                                             |        |
| getSeconds         | 返回秒（1-59）                                               |        |
| getMilliseconds    | 返回毫秒（1-999）                                            |        |
| getTime            | 返回自 1970 年 1 月 1 日午夜以来与指定日期的毫秒数/秒数      |        |
| getDay             | 返回星期（0-6）                                              |        |
| get | 返回年月日时分秒毫秒【根据参数返回】 | |
| **扩展方法**       |                                                              |        |
| getMonthCountDay   | 返回当月最后一天数                                           |        |
| getQuarter         | 返回季节（1-4）                                              | V1.0.4 |
| getAge             | 返回年龄（大于等0的整数）                                    | V1.0.5 |
| getCconstellation  | 返回星座                                                     | V1.0.5 |
| getDayOfYear       | 返回日期是当年的多少天                                       | V1.0.6 |
| getAdd       | 返回日期相加的新日期                               | V1.0.8 |
| getSubtract | 返回日期相减的新日期 | V1.0.8 |
| getDateDiff        | 返回日期相差天、时、总小时、分、秒、时间戳                   | V1.0.8 |
| getDiffDay     | 返回日期相差天数（自然天数）                                 | V1.0.8 |
| **格式化数据方法** |                                                              |        |
| getTimeFrame       | 返回不同时间段特定文案，默认AM(上午0-12点) , PM(下午12-24点) |        |
| getAllDate         | 返回格式化日期，默认返回yyy-MM-dd格式                        |        |
| getAllTime         | 返回格式化时间，默认返回hh:mm:ss格式                     |        |
| getFormat | 返回格式化日期，默认返回yyy-MM-dd hh:mm:ss格式               | V1.0.8 |
| getFormatOne       | 返回格式化日期：<br />         当天日期：显示hh:ss<br />         7天内：显示星期ww<br />         7天前：显示yyy-MM-dd hh:mm:ss |        |
| getFuture          | 返回传入时间戳有多少天、时、分、秒、时间戳                   |        |
| **农历日期方法**   |                                                              |        |
| getLunarZodiac     | 返回农历生肖鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪   | V1.0.5 |
| getLunar           | 返回农历日期数字/汉字/干支/润月信息                          | V1.0.5 |
| **日期判断方法**   |                                                              |        |
| isValid            | 判断日期是否合法                                             | V1.0.4 |
| isLeapYear         | 判断是否是闰年                                               |        |
| isBefore           | 判断日期在指定日期前                                         | V1.0.4 |
| isSame             | 判断日期是否相同                                             | V1.0.4 |
| isAfter            | 判断日期在指定日期后                                         | V1.0.4 |
| isBetween          | 判断指定日期是否在传入日期之间                               | V1.0.8 |
| isThisYear         | 判断是否是当年                                               | V1.0.6 |
| isThisMonth        | 判断是否是当月                                               | V1.0.6 |
| isThisWeek         | 判断是否是当前周                                             | V1.0.6 |
| isToday            | 判断是否是当天                                               | V1.0.6 |
| isWorkDay          | 判断是否是工作日/周末                                        | V1.0.6 |
| **日期转换方法** |  |  |
| toString | 返回包含时间信息的 string | V1.0.8 |
| toArray | 返回将日期转换数组 | V1.0.8 |
| toJSON | 返回序列化为 ISO 8601 格式的字符串 | V1.0.8 |
| toObject | 返回包含时间信息的 Object | V1.0.8 |
| **日期设置方法** |  |  |
| setYear | 设置日期的年份 | V1.0.8 |
| setMonth | 设置日期的月份 | V1.0.8 |
| setDate | 设置日期中月的某一天 | V1.0.8 |
| setHours | 设置日期的小时 | V1.0.8 |
| setMinutes | 设置日期的分钟数 | V1.0.8 |
| setSeconds | 设置日期的秒数 | V1.0.8 |
| setMilliseconds | 设置日期的毫秒数 | V1.0.8 |
| set | 设置年月日时分秒毫秒【根据参数设置】 | V1.0.8 |
| setStartOf | 设置到一个时间的开始 | V1.0.8 |
| setEndOf | 设置到一个时间的结束 | V1.0.8 |

# 三、方法说明

## 1、常规方法

### getYear

- **功能**：获取年份

- **参数**：无

- **返回值**：返回年份

- **返回数据类型**：`Number`

- **用法**：

  ```javascript
  const newData = new Wdate()
  console.log(newData.getYear()) // 2022
  ```



### getMonth

- **功能**：获取月份

- **参数**：(isFillZero)

  | 参数名     | 参数类型 | 参数默认值 | 参数说明                |
  | ---------- | -------- | ---------- | ----------------------- |
  | isFillZero | Boolean  | false      | 是否补0，小于10前边补零 |

- **返回值**：返回月份1-12|01-12

- **返回数据类型**：`Number`|`String`

- **用法**：

  ```javascript
  const newData = new Wdate('2022-01-27 13:05:03')
  console.log(newData.getMonth()) // 1
  console.log(newData.getMonth(true)) // 01
  ```



### getDate

- **功能**：获取当月第几天

- **参数**：(isFillZero)

  | 参数名     | 参数类型 | 参数默认值 | 参数说明                |
  | ---------- | -------- | ---------- | ----------------------- |
  | isFillZero | Boolean  | false      | 是否补0，小于10前边补零 |

- **返回值**：返回当月第几天1-31|01-31

- **返回数据类型**：`Number`|`String`

- **用法**：

  ```javascript
  const newData = new Wdate('2022-01-27 13:05:03')
  console.log(newData.getDate()) // 27
  console.log(newData.getDate(true)) //27
  ```



### getHours

- **功能**：获取小时

- **参数**：(isFillZero, isTwentyFour)

  | 参数名       | 参数类型 | 参数默认值 | 参数说明                |
  | ------------ | -------- | ---------- | ----------------------- |
  | isFillZero   | Boolean  | false      | 是否补0，小于10前边补零 |
  | isTwentyFour | Boolean  | true       | 是否是24小时制          |

- **返回值**：返回小时0-24|00-24, 如果12小时制返回0-12|00-12

- **返回数据类型**：`Number`|`String`

- **用法**：

  ```javascript
  const newData = new Wdate() // 当前日期2022年1月27日 13:05:03
  console.log(newData.getHours()) // 13 24小时制
  console.log(newData.getHours(false,false)) //1 12小时制不补零
  console.log(newData.getHours(true,false)) //01 12小时制补零
  ```



### getMinutes

- **功能**：获取分钟

- **参数**：(isFillZero)

  | 参数名     | 参数类型 | 参数默认值 | 参数说明                |
  | ---------- | -------- | ---------- | ----------------------- |
  | isFillZero | Boolean  | false      | 是否补0，小于10前边补零 |

- **返回值**：返回分钟0-59|00-59

- **返回数据类型**：`Number`|`String`

- **用法**：

  ```javascript
  const newData = new Wdate() // 当前日期2022年1月27日 13:05:03
  console.log(newData.getMinutes()) // 5
  console.log(newData.getMinutes(true)) // 05 不足10补0
  ```



### getSeconds

- **功能**：获取秒数

- **参数**：(isFillZero)

  | 参数名     | 参数类型 | 参数默认值 | 参数说明                    |
  | ---------- | -------- | ---------- | --------------------------- |
  | isFillZero | Boolean  | false      | 是否补0，天数小于10前边补零 |

- **返回值**：返回秒数0-59|00-59

- **返回数据类型**：`Number`|`String`

- **用法**：

  ```javascript
  const newData = new Wdate() // 当前日期2022年1月27日 13:05:03
  console.log(newData.getSeconds()) // 3
  console.log(newData.getSeconds(true)) //03 不足10补0
  ```



### getMilliseconds

- **功能**：获取毫秒数

- **参数**：(isFillZero)

  | 参数名     | 参数类型 | 参数默认值 | 参数说明                    |
  | ---------- | -------- | ---------- | --------------------------- |
  | isFillZero | Boolean  | false      | 是否补0，天数小于10前边补零 |

- **返回值**：返回毫秒数0-999|00-999

- **返回数据类型**：`Number`|`String`

- **用法**：

  ```javascript
  const newData = new Wdate(1643264411611)
  console.log(newData.getMilliseconds()) // 611
  ```



### getTime

- **功能**：获取时间戳

- **参数**：(length)

  | 参数名 | 参数类型 | 参数默认值 | 参数说明     |
  | ------ | -------- | ---------- | ------------ |
  | length | Number   | 13         | 13毫秒、10秒 |

- **返回值**：返回时间戳毫秒、秒，返回数据类型：`Number`

- **用法**：

  ```javascript
  const newData = new Wdate('2008-02-01 10:02:02')
  console.log(newData.getTime()) // 1643265801333  毫秒13位
  console.log(newData.getTime(10)) // 1643265801 秒10位
  console.log(newData.getTime(12)) //传入参数非法
  ```



### getDay

- **功能**：返回星期

- **参数**：(isChinese)

  | 参数名    | 参数类型 | 参数默认值 | 参数说明     |
  | --------- | -------- | ---------- | ------------ |
  | isChinese | Boolean  | true       | 是否显示中文 |

- **返回值**：返回星期，返回数据类型：`Number`|`String`,  `Number` 返回(0、1、2、3、4、5、6)，0代表星期日， `String`返回大写(一、二、三、四、五、六、日)

- **用法**：

  ```javascript
  const newData = new Wdate() // 当前日期2022年1月27日 13:05:03
  console.log(newData.getDay()) // 四
  console.log(newData.getDay(false)) // 4
  ```



### get

- **功能**：设置指定年月日时分秒毫秒

- **参数**：(unit,isFillZero)

  | 参数名     | 参数类型 | 参数默认值 | 参数说明   |
  | ---------- | -------- | ---------- | ---------- |
  | unit*      | Number   | date       | 设置的数值 |
  | isFillZero | Boolean  | true       | 是否补0    |

  unit参数类型说明：

  | ID   | 参数值      | 缩写    | 说明 |
  | ---- | ----------- | ------- | ---- |
  | 1    | year        | y       | 年   |
  | 2    | month       | M(大写) | 月   |
  | 3    | date        | d       | 日   |
  | 4    | hour        | H(大写) | 小时 |
  | 5    | minute      | m       | 分钟 |
  | 6    | second      | s       | 秒钟 |
  | 7    | millisecond | ms      | 毫秒 |

- **用法**：

  ```javascript
  const dateTime = "2022-04-14 12:22:32"
  console.log(new Wdate(dateTime).get('year')) // 2022
  console.log(new Wdate(dateTime).get('month')) // 4
  console.log(new Wdate(dateTime).get('month', true)) // 04   不足10前边补0
  console.log(new Wdate(dateTime).get('date')) // 14
  console.log(new Wdate(dateTime).get('hour')) // 12
  console.log(new Wdate(dateTime).get('minute')) // 22
  console.log(new Wdate(dateTime).get('second')) // 32
  console.log(new Wdate(dateTime).get('millisecond')) // 0
  ```

  unit缩写模式

  ```javascript
  const dateTime = "2022-04-14 12:22:32"
  console.log(new Wdate(dateTime).get()) // 14 默认为天
  console.log(new Wdate(dateTime).get('y')) // 2022
  console.log(new Wdate(dateTime).get('M')) // 4
  console.log(new Wdate(dateTime).get('d')) // 14
  console.log(new Wdate(dateTime).get('H')) // 12
  console.log(new Wdate(dateTime).get('m')) // 22
  console.log(new Wdate(dateTime).get('s')) // 32
  console.log(new Wdate(dateTime).get('ms')) // 0
  ```



## 2、扩展方法

### getMonthCountDay

- **功能**：获取当月总天数

- **参数**：无

- **返回值**：2月【28】、2月闰年【29】、4、6、9、11月【30】、1、3、5、7、8、10、12月【31】

- **返回数据类型**：`Number`

- **用法**：

  ```javascript
  const newData = new Wdate('2008-02-01 10:02:02')
  console.log(newData.getMonthCountDay()) // 29
  
  const newData = new Wdate()
  console.log(newData.getMonthCountDay()) // 31
  ```

  

### getQuarter

- **功能**：获取季度

- **参数**：(forMartText)

  `forMartText`是自定义格式为一个长度为4的数组，数组下标0-3分别对应1-4季，最终返回自定义文案

  | 参数名      | 参数类型 | 参数默认值 | 参数说明   |
  | ----------- | -------- | ---------- | ---------- |
  | forMartText | Array    | 无         | 自定义格式 |

- **返回值**：1-4， 1-3月返回1，4-6月返回2，7-9月返回3，10-12月返回4

- **返回数据类型**：`Number`|`String`【自定义格式】

- **用法**：

  ```javascript
  const newData = new Wdate('2022-02-14 12:20:20')
  
  console.log(newData.getQuarter(['第一季度','第二季度','第三季度','第四季度'])) // 第一季度
  console.log(newData.getQuarter(['春','夏','秋','冬'])) // 春
  console.log(newData.getQuarter()) // 1
  ```



### getAge

- **功能**：获取年龄

- **参数**：无

- **返回值**：大于等于0的整数

- **返回数据类型**：`Number`

- **用法**：

  ```javascript
  const newData = new Wdate('1992-04-24') 
  console.log(newData.getAge()) // 29
  
  const newData = new Wdate('1992-01-01') 
  console.log(newData.getAge()) // 30
  ```

`注意`：实例化日期不能大于当前日期



### getCconstellation

- **功能**：获取星座

- **参数**：无

- **返回值**：12星座白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、摩羯座、水瓶座、双鱼座

- **返回数据类型**：`String`

- **星座和时间对应表：**

  | ID   | 星座名称 | 对应日期      |
  | ---- | -------- | ------------- |
  | 1    | 水瓶座   | 1.20 - 2.18   |
  | 2    | 双鱼座   | 2.19 - 3.20   |
  | 3    | 白羊座   | 3.21 - 4.19   |
  | 4    | 金牛座   | 4.20 - 5.20   |
  | 5    | 双子座   | 5.21 - 6.21   |
  | 6    | 巨蟹座   | 6.22 - 7.22   |
  | 7    | 狮子座   | 7.23 - 8.22   |
  | 8    | 处女座   | 8.23 - 9.22   |
  | 9    | 天秤座   | 9.23 - 10.23  |
  | 10   | 天蝎座   | 10.24 - 11.22 |
  | 11   | 射手座   | 11.23 - 12.21 |
  | 12   | 摩羯座   | 12.22 - 1.19  |

- **用法**：

```javascript
const newData = new Wdate('1992-2-22')
console.log(newData.getCconstellation()) // 双鱼座
```



### getDayOfYear

- **功能**：返回是当年的多少天

- **参数**：无

- **返回值**：1-366

- **返回数据类型**：`Number`

- **用法**：

  ```javascript
  const newData = new Wdate('2022-01-05')
  console.log(newData.getDayOfYear()) // 5
  ```



### getAdd

- **功能**：返回增加一定时间的新时间

- **参数**：(size, unit, formart)

  format参数传值**参考格式化数据方法**

  | 参数名  | 参数类型 | 参数默认值                           | 参数说明   |
  | ------- | -------- | ------------------------------------ | ---------- |
  | size    | Number   | 0/ 如果为负数则同getSubtract方法一样 | 大小       |
  | unit    | String   | date                                 | 类型       |
  | formart | String   | yy-MM-dd HH:mm:ss                    | 格式化格式 |

  unit参数类型说明：

  | ID   | 参数值      | 缩写    | 说明 |
  | ---- | ----------- | ------- | ---- |
  | 1    | year        | y       | 年   |
  | 2    | month       | M(大写) | 月   |
  | 3    | date        | d       | 日   |
  | 4    | hour        | H(大写) | 小时 |
  | 5    | minute      | m       | 分钟 |
  | 6    | second      | s       | 秒钟 |
  | 7    | millisecond | ms      | 毫秒 |
  | 8    | quarter     | Q(大写) | 季   |
  | 9    | week        | w       | 周   |

- **返回值**：格式化日期

- **返回数据类型**：String

- **用法**：

  ```javascript
  
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'year') // 2023-02-22 12:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'month')) // 2022-04-22 12:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'date')) // 2022-02-23 12:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'hour')) // 2022-02-22 13:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'minute')) // 2022-02-22 12:13:12
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'second')) // 2022-02-22 12:12:13
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(2000, 'millisecond')) // 2022-02-22 12:12:14
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'quarter')) // 2022-06-22 12:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'week')) // 2022-03-01 12:12:12
  ```
  
  

### getSubtract

- **功能**：返回减少一定时间的新时间

- **参数**：(size, unit, formart)

  format参数传值**参考格式化数据方法**

  | 参数名  | 参数类型 | 参数默认值                      | 参数说明   |
  | ------- | -------- | ------------------------------- | ---------- |
  | size    | Number   | 0/ 如果为负数则同getAdd方法一样 | 大小       |
  | unit    | String   | date                            | 类型       |
  | formart | String   | yy-MM-dd HH:mm:ss               | 格式化格式 |

  unit参数类型说明：

  | ID   | 参数值      | 缩写    | 说明 |
  | ---- | ----------- | ------- | ---- |
  | 1    | year        | y       | 年   |
  | 2    | month       | M(大写) | 月   |
  | 3    | date        | d       | 日   |
  | 4    | hour        | H(大写) | 小时 |
  | 5    | minute      | m       | 分钟 |
  | 6    | second      | s       | 秒钟 |
  | 7    | millisecond | ms      | 毫秒 |
  | 8    | quarter     | Q(大写) | 季   |
  | 9    | week        | w       | 周   |

- **返回值**：格式化日期

- **返回数据类型**：String

- **用法**：

  ```javascript
  默认值天数
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(10)) //2022-03-04 12:12:12
  
  传参模式
  console.log(new Wdate('2022-02-22 12:12:12').getSubtract(1, 'year')) // 2021-02-22 12:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getSubtract(1, 'month')) // 2022-01-22 12:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getSubtract(1, 'date')) // 2022-02-21 12:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getSubtract(1, 'hour')) // 2022-02-22 11:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getSubtract(1, 'minute')) // 2022-02-22 12:11:12
  console.log(new Wdate('2022-02-22 12:12:12').getSubtract(1, 'second')) // 2022-02-22 12:12:11
  console.log(new Wdate('2022-02-22 12:12:12').getSubtract(2000, 'millisecond')) // 2022-02-22 12:12:10
  console.log(new Wdate('2022-02-22 12:12:12').getSubtract(1, 'quarter')) // 2021-11-22 12:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getSubtract(1, 'week')) // 2022-02-15 12:12:12
  缩写模式
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'y')) // 2023-02-22 12:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'M')) // 2022-04-22 12:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'd')) // 2022-02-23 12:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'H')) // 2022-02-22 13:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'm')) // 2022-02-22 12:13:12
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 's')) // 2022-02-22 12:12:13
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(2000, 'ms')) // 2022-02-22 12:12:14
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'Q')) // 2022-06-22 12:12:12
  console.log(new Wdate('2022-02-22 12:12:12').getAdd(1, 'w')) // 2022-03-01 12:12:12
  ```
  
  

### getDateDiff

- **功能**：获取日期相减后的信息, 计算方法： 实例化日期 — 传入日期【参数dateTime】

- **参数**：(dateTime)

  format参数传值**参考格式化数据方法**

  | 参数名   | 参数类型       | 参数默认值   | 参数说明 |
  | -------- | -------------- | ------------ | -------- |
  | dateTime | String\|Number | 系统当前日期 | 运算日期 |

- **返回值**：格式化日期

- **返回数据类型**：Object/String[两个日期相同]

- **用法**

  情景1： 比较日期相同

  ```javascript
  console.log(new Wdate().getDateDiff()) // 两个日期相同
  ```

  情景2：实例化日期在传入日期之前

  ```javascript
  console.log(new Wdate('2022-03-03 12:00:00').getDateDiff('2022-03-04 03:30:30'))
  // 打印结果
  {
    day: 0, // 总天数
    hours: 15,
    hoursCount: 15, // 总小时
    minutes: 30,
    seconds: 30,
    timestamp: -55830000 // 结果为负数
  }
  ```

  情景3：实例化日期在传入日期之后

  ```javascript
  console.log(new Wdate('2022-03-03 12:00:00').getDateDiff('2022-03-02 03:30:30'))
  {
    day: 1,
    hours: 8,
    hoursCount: 32,
    minutes: 29,
    seconds: 30,
    timestamp: 116970000
  }
  ```



### getDiffDay

- **功能**：获取日期相减后自然天数(日期计算，不考虑时间), 计算方法： 实例化日期 — 传入日期【参数dateTime】

- **参数**：(dateTime)

  format参数传值**参考格式化数据方法**

  | 参数名   | 参数类型       | 参数默认值   | 参数说明 |
  | -------- | -------------- | ------------ | -------- |
  | dateTime | String\|Number | 系统当前日期 | 运算日期 |

- **返回值**：格式化日期

- **返回数据类型**：Number

- **用法**

  情景1： 同一天

  ```javascript
  console.log(new Wdate().getDiffDay()) // 0
  ```

  情景2：实例化日期在传入日期之前

  ```javascript
  console.log(new Wdate('2022-03-03 12:00:00').getDiffDay('2022-03-04 03:30:30')) // -1
  ```

  情景2：实例化日期在传入日期之后

  ```javascript
  console.log(new Wdate('2022-03-03 12:00:00').getDiffDay('2022-03-02 03:30:30')) // 1
  ```

  



## 3、格式化数据方法

### getTimeFrame

- **功能**：根据时间段返回特定文案

- **参数**：(hour, text)

  hour和text数字长度必须一致，text定义时间范围的下标对应hour数字下标里面展示的内容

  | 参数名 | 参数类型 | 参数默认值                                 | 参数说明       |
  | ------ | -------- | ------------------------------------------ | -------------- |
  | hour   | Array    | ['AM', 'PM']                               | 定义显示文案   |
  | text   | Array    | [{start: 0, end: 12},{start: 12, end: 24}] | 定义时间段范围 |

- **返回值**：AM,PM ，自定义文案

- **返回数据类型**：String

- **用法**：

  ```javascript
  const newData = new Wdate() // 当前日期2022年1月27日 13:05:03
  // 默认值
  text = ['AM', 'PM']
  hour = [{start: 0, end: 12},{start: 12, end: 24}
  console.log(newData.getTimeFrame()) // PM   
  ```

  自定义指定时间显示指定文案

  ```javascript
  const newData = new Wdate()
  
  const text = ['凌晨', '早上', '上午', '中午', '下午', '晚上', '深夜']
  const hour = [
    { start: 0, end: 4 },
    { start: 4, end: 8 },
    { start: 8, end: 12 },
    { start: 12, end: 14 },
    { start: 14, end: 18 },
    { start: 18, end: 22 },
    { start: 22, end: 24 },
  ]
  console.log(newData.getTimeFrame(text, hour))
  ```

  

### getAllDate

- **功能**：格式化日期

- **参数**：(format,isFillZero)

  | 参数名     | 参数类型 | 参数默认值 | 参数说明     |
  | ---------- | -------- | ---------- | ------------ |
  | format     | String   | yy-MM-dd   | 定义日期格式 |
  | isFillZero | Boolean  | true       | 是否补0      |

- **返回值**：年-月-日、自定义格式

- **返回数据类型**：`String`

- **用法**：

  ```javascript
  const newData = new Wdate()
  console.log(newData.getAllDate('yy年MM月dd日')) // 2022年01月27日
  console.log(newData.getAllDate('yy年MM月dd日',false)) // 2022年1月27日
  console.log(newData.getAllDate('MM月dd日')) //01月27日
  console.log(newData.getAllDate('yy年MM月')) //2022年01月
  ```



### getAllTime

- **功能**：格式化时间

- **参数**：(format,isFillZero)

  | 参数名     | 参数类型 | 参数默认值 | 参数说明     |
  | ---------- | -------- | ---------- | ------------ |
  | format     | String   | HH-mm-ss   | 定义时间格式 |
  | isFillZero | Boolean  | true       | 是否补0      |

- **返回值**：时:分:秒、自定义格式

- **返回数据类型**：`String`

- **用法**：

  ```javascript
  const newData = new Wdate()
  console.log(newData.getAllTime('HH:mm:ss')) // 14:12:02
  console.log(newData.getAllTime('hh:mm:ss')) // 02:12:02
  console.log(newData.getAllTime('mm:ss')) // 12:02
  console.log(newData.getAllTime('HH:mm')) // 14:12
  ```



### getFormat

- **功能**：格式化日期时间

- **参数**：(format,isFillZero)

  | 参数名     | 参数类型 | 参数默认值        | 参数说明         |
  | ---------- | -------- | ----------------- | ---------------- |
  | format     | String   | yy-MM-dd HH:mm:ss | 定义日期时间格式 |
  | isFillZero | Boolean  | true              | 是否补0          |

- **返回值**：年-月-日 时:分:秒、自定义格式

- **返回数据类型**：`String`

- **用法**：

  ```javascript
  const newData = new Wdate()
  console.log(newData.getFormat()) // 2022-01-27 14:57:51 默认格式
  console.log(newData.getFormat('yy年')) // 2022年
  console.log(newData.getFormat('yy年MM月')) // 2022年01月
  console.log(newData.getFormat('yy年MM月dd日'))  // 2022年01月27日
  console.log(newData.getFormat('yy年MM月dd日', false))  //2022年1月27日 
  console.log(newData.getFormat('MM月yy年')) //01月2022年
  console.log(newData.getFormat('yy.MM.dd'))  //2022.01.27
  console.log(newData.getFormat('yy.MM.dd hh.mm.ss'))  // 2022.01.27 03:03:46
  console.log(newData.getFormat('yy.MM.dd hh时mm分ss秒 星期ww'))  // 2022.01.27 04时07分41秒 星期四
  console.log(newData.getFormat('yy.MM.dd hh时mm分ss秒 星期ww', false)) // 2022.1.27 4时7分41秒 星期四
  console.log(newData.getFormat('hh时mm分ss秒 星期ww'))  // 04时08分47秒 星期四
  console.log(newData.getFormat('星期ww hh时mm分ss秒')) // 星期四 04时08分47秒
  console.log(newData.getFormat('今天是dd日, HH时mm分'))  //今天是27日, 16时10分
  ```



### getFormatOne

- **功能**：格式化日期时间, 7天前日期显示日期时间格式、当天显示时间格式、7天内显示星期格式

- **参数**：(format,isFillZero)

  | 参数名     | 参数类型 | 参数默认值                                                   | 参数说明              |
  | ---------- | -------- | ------------------------------------------------------------ | --------------------- |
  | format     | Object   | {<br/>  sevenIn: '星期ww',<br/>  sevenOut: 'yy-MM-dd HH:mm:ss',<br/>  today: '今天是HH:ss:mm'<br/>} | 定义7天前日期时间格式 |
  | isFillZero | Boolean  | true                                                         | 是否补0               |

  format参数说明：参数说明参考***format格式化日期字符说明***

  ```javascript
  {
    sevenIn: '星期ww',  // 7天内时间显示格式
    sevenOut: 'yy-MM-dd HH:mm:ss', // 七天以外显示格式
    today: '今天是HH:ss:mm' // 当天显示格式
  }
  ```

  

- **返回值**：年-月-日 时:分:秒、星期一-星期日、时:分:秒/ 自定义格式

- **返回数据类型**：`String`

- **用法**：

  ```javascript
  
  const newData = new Wdate()
  console.log(newData.getFormatOne()) // 15:26:36
  console.log(newData.getFormatOne({today: '今天是HH:ss:mm'})) // 今天是15:36:26
  
  const newData = new Wdate('2022-02-28 12:12:00')
  console.log(newData.getFormatOne({sevenIn: 'yy年MM月dd日'})) // 2022年02月28日
  
  const newData = new Wdate('2022-02-22 12:12:00')
  console.log(newData.getFormatOne({sevenOut: 'yy年MM月dd日 HH点mm分ss秒 周ww'})) // 2022年02月22日 12点12分00秒 周二
  ```
  
  

### getFuture

- **功能**：根据倒计时时间戳获取天、时、分、秒、时间戳

- **参数**：

  | 参数名    | 参数类型 | 参数默认值                                    | 参数说明     |
  | --------- | -------- | --------------------------------------------- | ------------ |
  | timestamp | String   | 无/未传值用实例化日期时间戳减去系统日期时间戳 | 倒计时时间戳 |

- **返回值**：

  ```
  { 
  	day: 2, // 天
  	hours: 23, // 小时
      hoursCount: 71 总小时
  	minutes: 57, // 分钟
  	seconds: 2, // 秒
  	timestamp: 259022746
  }
  ```

  

- **返回数据类型**：`Object`

- **用法**：

  主要用于做倒计时使用，根据倒计时的时间戳，格式化显示天、时、分、秒

  ```javascript
  const newData = new Wdate()
  
  console.log(newData.getFuture(250000000))
  打印结果
  { day: 2, hours: 69, minutes: 26, seconds: 40, timestamp: 250000000 }
  
  不传参数，用实例化日期和当前日期相减计算取绝对值计算返回
  const newData = new Wdate('2022-02-28 17:01:00') // 时间戳13位
  
  console.log(newData.getFuture()) 
  console.log(new Date())
  {
    day: 2,
    hours: 23,
    hoursCount: 71,
    minutes: 57,
    seconds: 2,
    timestamp: 259022746
  }
  2022-02-25T09:03:57.262Z
  ```

  

## 4、农历日期方法

### getLunarZodiac

- **功能**：获取农历生肖

- **参数**：无

- **返回值**：12生肖鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪

- **返回数据类型**：`String`

- **用法**：

  ```javascript
  const newData = new Wdate('2022-02-27 14:12:02')
  console.log(newData.getLunarZodiac()) // 虎
  
  const newData = new Wdate('2022-01-27 14:12:02') // 系统当前时间
  console.log(newData.getLunarZodiac()) // 牛
  ```

  `注意：`大致根据农历正月初一以后进行判断，**精确**判断应该根据农历第一个节气



### getLunar

- **功能**：返回农历日期数字/汉字/干支/润月信息【返回1901-2099年农历日期信息】

- **参数**：无

- **返回值**：

  ```
  {
    lunarYear: 2021, // 农历年
    lunarMonth: 12, // 农历月
    lunarDay: 25, // 农历日
    lunarYearCN: '二零二一', // 汉字表示农历年
    lunarMonthCN: '腊月', // 汉字表示农历月
    lunarDayCN: '廿十五', // 汉字表示农历日
    lunarLeapMonth: 0, // 当年润月份，0表示无闰月
    lunarIsLeapMonth: false, // 当年月是否是闰月
    lunarZodiac: '牛', // 农历生肖
    ganZhiYear: '辛丑', // 干支表示年
    ganZhiMonth: '辛丑', // 干支表示月
    ganZhiDay: '庚辰', // 干支表示日
    lunarHourCn: '未时' // 地址表示时辰
  }
  ```

- **返回数据类型**：`Object`

- **用法**：

  ```javascript
  const newData = new Wdate() // 系统当前时间
  
  console.log(newData.getLunar())
  {
    lunarYear: 2022,
    lunarMonth: 1,
    lunarDay: 23,
    lunarYearCN: '二零二二',
    lunarMonthCN: '正月',
    lunarLeapMonth: 0,
    lunarIsLeapMonth: false,
    lunarDayCN: '廿十三',
    lunarZodiac: '虎',
    ganZhiYear: '壬寅',
    ganZhiMonth: '壬寅',
    ganZhiDay: '丁未',
    lunarHourCn: '巳时'
  }
  ```



## 5、日期判断方法

### isValid

- **功能**：检验日期是否合法

- **参数**：（date, res）

  | 参数名 | 参数类型 | 参数默认值 | 参数说明                                |
  | ------ | -------- | ---------- | --------------------------------------- |
  | date*  | Any      | 无         | 检验的日期                              |
  | res    | Boolean  | false      | 结果为true, 返回new Date() 实例化的日期 |

- **返回值**：true/false/{ date: 2022-02-25T00:00:00.000Z, timestamp: 1645747200000, res: true }

- **返回数据类型**：`Boolean`|`Object`

- **用法**：

  ```javascript
  console.log(newData.isValid('2022-02-25', true)) // { date: 2022-02-25T00:00:00.000Z, timestamp: 1645747200000, res: true }
  console.log(newData.isValid('2022-02-25')) // ture
  console.log(newData.isValid('2022-02-aa')) // falseisLeapYear
  ```



### isLeapYear

- **功能**：判断是否是闰年

- **参数**：无

- **返回值**：true/false

- **返回数据类型**：`Boolean`

- **用法**：

  ```javascript
  const newData = new Wdate()
  console.log(newData.isLeapYear()) // false
  
  const newData = new Wdate('2008-01-01 10:02:02')
  console.log(newData.isLeapYear()) // true
  ```



### isBefore

- **功能**：判断传入日期是否在指定日期之前

- **参数**：(compareDate)

  | 参数名       | 参数类型 | 参数默认值 | 参数说明   |
  | ------------ | -------- | ---------- | ---------- |
  | compareDate* | String   | 无         | 比较的日期 |

- **返回值**：true/false

- **返回数据类型**：`Boolean`

- **用法**：

  ```javascript
  const newData = new Wdate('2022-02-14 12:20:20') // 指定日期
  
  console.log(newData.isBefore('2022-02-14 12:20:19')) // true
  console.log(newData.isBefore('2022-02-14 12:20:22')) // false
  ```

  

### isSame

- **功能**：判断传入日期是否与指定日期相同

- **参数**：(compareDate)

  | 参数名       | 参数类型 | 参数默认值 | 参数说明   |
  | ------------ | -------- | ---------- | ---------- |
  | compareDate* | String   | 无         | 比较的日期 |

- **返回值**：true/false

- **返回数据类型**：`Boolean`

- **用法**：

  ```javascript
  const newData = new Wdate('2022-02-14 12:20:20') // 指定日期
  
  console.log(newData.isSame('2022-02-14 12:20:20')) // 传入日期  true
  console.log(newData.isSame('2022-02-14 12:20:22')) // 传入日期  false
  ```

  

### isAfter

- **功能**：判断传入日期是否与指定日期之后

- **参数**：(compareDate)

  | 参数名       | 参数类型 | 参数默认值 | 参数说明   |
  | ------------ | -------- | ---------- | ---------- |
  | compareDate* | String   | 无         | 比较的日期 |

- **返回值**：true/false

- **返回数据类型**：`Boolean`

- **用法**：

  ```javascript
  const newData = new Wdate('2022-02-14 12:20:20') // 指定日期
  
  console.log(newData.isAfter('2022-02-14 12:20:18')) // false
  console.log(newData.isAfter('2022-02-14 12:20:21')) // ture
  ```

  

### isBetween

- **功能**：判断指定日期是否在传入日期范围(***大于等于开始时间，小于等于结束时间***)

- **参数**：(startTime, endTime)

  日期支持格式和实例化参数日期格式一样

  | 参数名     | 参数类型       | 参数默认值 | 参数说明     |
  | ---------- | -------------- | ---------- | ------------ |
  | startTime* | String\|Number | 无         | 范围开始时间 |
  | endTime*   | String         | 无         | 范围结束时间 |

- **返回值**：true/false

- **返回数据类型**：`Boolean`

- **用法**：

  ```javascript
  console.log(new Wdate('2022-03-04 15:36:00').isBetween('2022-03-04 15:36:01', '2022-03-26 12:12:00')) // false
  console.log(new Wdate('2022-03-04 15:36:00').isBetween('2022-03-03 15:36:01', '2022-03-26 12:12:00')) // true
  console.log(new Wdate('2022-03-04 15:36:00').isBetween(1646379361000, 1648267920000)) // false
  console.log(new Wdate('2022-03-04 15:36:00').isBetween(1646292961000, 1648267920000)) // true
  ```

  

### isThisYear

- **功能**：判断是否当年

- **参数**：无

- **返回值**：true/false

- **返回数据类型**：`Boolean`

- **用法**：

  ```javascript
  const newData = new Wdate('2022-02-24 17:09:00') 
  console.log(newData.isThisYear()) // ture
  
  const newData = new Wdate('2023-02-24 17:09:00') 
  console.log(newData.isThisYear()) // false
  ```

  

### isThisMonth

- **功能**：判断是否当月

- **参数**：无

- **返回值**：true/false

- **返回数据类型**：`Boolean`

- **用法**：

  ```javascript
  const newData = new Wdate('2023-02-24 17:09:00') 
  console.log(newData.isThisMonth()) // false
  
  const newData = new Wdate('2022-02-24 17:09:00') 
  console.log(newData.isThisMonth()) // true
  ```

  

### isThisWeek

- **功能**：判断是否本周

- **参数**：无

- **返回值**：true/false

- **返回数据类型**：`Boolean`

- **用法**：

  ```javascript
  const newData = new Wdate('2022-02-24 17:09:00') 
  console.log(newData.isThisWeek()) // true
  
  const newData = new Wdate('2022-02-28 17:09:00') 
  console.log(newData.isThisWeek()) // false
  ```

  

### isToday

- **功能**：判断是否是当天

- **参数**：无

- **返回值**：true/false

- **返回数据类型**：`Boolean`

- **用法**：

  ```javascript
  const newData = new Wdate('2022-02-28 17:09:00') 
  console.log(newData.isToday()) // false
  
  const newData = new Wdate('2022-02-25 17:09:00') 
  console.log(newData.isToday()) // ture
  ```

  

### isWorkDay

- **功能**：判断是否是工作日、周末， **`不考虑法定假日`**

- **参数**：无

- **返回值**：true/false

- **返回数据类型**：`Boolean`

- **用法**：

  ```javascript
  const newData = new Wdate('2022-02-25 17:09:00') 
  console.log(newData.isWorkDay()) // true
  
  const newData = new Wdate('2022-02-26 17:09:00') 
  console.log(newData.isWorkDay()) // false
  ```

  

## 6、日期转换方法



### toString

- **功能**：序列化为 ISO 8601 格式的字符串

- **参数**：无

- **返回值**：序列化格式的字符串

- **返回数据类型**：`String`

- **用法**：

  ```javascript
  console.log(new Wdate(1646705779112).toString()) // Tue Mar 08 2022 10:16:19 GMT+0800 (新加坡标准时间)
  ```



### toArray

- **功能**：返回包含时间信息的 Array

- **参数**：(isFillZero)

  | 参数名     | 参数类型 | 参数默认值 | 参数说明 |
  | ---------- | -------- | ---------- | -------- |
  | isFillZero | Boolean  | false      | 是否补0  |

- **返回值**：时间信息的数组['年'，‘月’，‘日’，‘时’，‘分’，‘秒’，‘毫秒’]

- **返回数据类型**：`Array`

- **用法**：

  ```javascript
  // 2022-03-08 10:16:19
  console.log(new Wdate(1646705779112).toArray()) // [2022, 3, 8, 10, 16, 19, 112]
  console.log(new Wdate(1646705779112).toArray(true)) // [ '2022', '03', '08', '10','16' ,'19', '112']
  ```

  

### toJSON

- **功能**：序列化为 ISO 8601 格式的字符串

- **参数**：无

- **返回值**：序列化格式的字符串

- **返回数据类型**：`String`

- **用法**：

  ```javascript
  console.log(new Wdate().toJSON()) // 2022-03-08T02:11:18.764Z
  ```

  

### toObject

- **功能**：返回包含时间信息的 Object

- **参数**：(isFillZero)

  | 参数名     | 参数类型 | 参数默认值 | 参数说明 |
  | ---------- | -------- | ---------- | -------- |
  | isFillZero | Boolean  | false      | 是否补0  |

- **返回值**：

  ```javascript
  {
    year: 2022, // 年
    month: 1, // 月
    date: 27, // 日
    hours: 14, // 时
    minutes: 46, // 分
    seconds: 29, // 秒
    timestamp: 1643265989971 // 时间戳毫秒
  }
  ```

  

- **返回数据类型**：`Object`

- **用法**：

  ```javascript
  console.log(new Wdate(1646705779112).toObject(true)) // 补零,所有值返回String
  打印结果：
  {
    year: '2022',
    month: '03',
    date: '08',
    hours: '10',
    minutes: '16',
    seconds: '19',
    timestamp: '1646705779112'
  }
  console.log(new Wdate(1646705779112).toObject()) // 默认不补零，所有值返回类型Number
  {
    year: 2022,
    month: 3,
    date: 8,
    hours: 10,
    minutes: 16,
    seconds: 19,
    timestamp: 1646705779112
  }
  ```



## 7、设置方法

**以下所有set开头方法支持链式操作其他方法**, 如果size传参错误，会抛出错误异常`throw new Error('size参数错误');`

例：

```javascript
console.log(new Wdate('2022-03-08 12:12:12').set(2,'d').getFormat()) // 2022-03-02 12:12:12
console.log(new Wdate('2022-03-08 12:12:12').set(2020,'y').getFormat('将2022年修改为：yy')) // 将2022年修改为：2020
console.log(new Wdate('2022-03-08 12:12:12').set(2020,'y').getYear()) // 2022
console.log(new Wdate('2022-03-08 12:12:12').setYear(2020).getYear()) // 2022
```

### setYear

- **功能**：设置日期的年份

- **参数**：(year)

  | 参数名 | 参数类型 | 参数默认值 | 参数说明                            |
  | ------ | -------- | ---------- | ----------------------------------- |
  | year   | Number   | 0          | 年份(年份参数只能在1970-2200年之间) |

- **用法**：

  ```javascript
  console.log(new Wdate('2022-03-08 12:12:12').setYear(2).getYear()) // 抛出异常throw new Error('年份参数只能在1970-2200年之间')
  const newData = new Wdate('2022-03-08 12:12:12')
  newData.setYear(2020)
  console.log(newData.getYear()) // 2020
  链式操作：
  console.log(newData.setYear(2020).getYear()) // 2020
  ```

  

### setMonth

- **功能**：设置日期的月份

- **参数**：(month)

  | 参数名 | 参数类型 | 参数默认值 | 参数说明                                                     |
  | ------ | -------- | ---------- | ------------------------------------------------------------ |
  | month  | Number   | 0          | 月份期望值是 1-12，但允许其他值：<br />0 将导致上一年的最后一个月<br />13 将导致明年的第1个月 |

- **用法**：

  ```javascript
  console.log(new Wdate('2022-03-08 12:12:12').setMonth(2).getFormat()) // 2022-02-08 12:12:12
  console.log(new Wdate('2022-03-08 12:12:12').setMonth(-1).getFormat()) // 2021-11-08 12:12:12 上一年的第二个月
  console.log(new Wdate('2022-03-08 12:12:12').setMonth(13).getFormat()) // 2023-01-08 12:12:12 下一年的第一个月
  ```

  

### setDate

- **功能**：设置日期中月的某一天

- **参数**：(day)

  | 参数名 | 参数类型 | 参数默认值 | 参数说明                                                     |
  | ------ | -------- | ---------- | ------------------------------------------------------------ |
  | day    | Number   | 0          | 必需。整数，表示月中的某一天。<br />预期值是 1-31，但允许其他值<br />0 将导致上个月的最后一天<br />-1 将导致上个月的最后一天的前一天<br />如果一个月有 31 天：<br />32 将导致下个月的第一天<br />如果一个月有 30 天：<br />32 将导致下个月的第二天 |

- **用法**：

  ```javascript
  console.log(new Wdate('2022-03-08 12:12:12').setDate(20).getFormat()) // 2022-03-20 12:12:12
  // 0 将导致上个月的最后一天
  console.log(new Wdate('2022-03-08 12:12:12').setDate(0).getFormat()) // 2022-02-28 12:12:12
  // -1 将导致上个月的最后一天的前一天
  console.log(new Wdate('2022-03-08 12:12:12').setDate(-1).getFormat()) // 2022-02-27 12:12:12
  // 如果一个月有 31 天：32 将导致下个月的第一天
  console.log(new Wdate('2022-03-08 12:12:12').setDate(32).getFormat()) // 2022-04-01 12:12:12
  // 如果一个月有 30 天32 将导致下个月的第二天
  console.log(new Wdate('2022-04-08 12:12:12').setDate(32).getFormat()) // 2022-05-02 12:12:12
  ```

  

### setHours

- **功能**：设置日期中的小时

- **参数**：(hour)

  | 参数名 | 参数类型 | 参数默认值 | 参数说明                                                     |
  | ------ | -------- | ---------- | ------------------------------------------------------------ |
  | hour   | Number   | 0          | 表示小时的整数。<br />期望值是 0-23，但允许其他值：<br />-1 将导致前一天的最后一个小时<br />24 将导致第二天的第一个小时 |

- **用法**：

  ```javascript
  console.log(new Wdate('2022-04-08 12:12:12').setHours(13).getFormat()) // 2022-04-08 13:12:12
  console.log(new Wdate('2022-04-08 12:12:12').setHours(0).getFormat()) // 2022-04-08 00:12:12
  // -1 将导致前一天的最后一个小时
  console.log(new Wdate('2022-04-08 12:12:12').setHours(-1).getFormat()) // 2022-04-07 23:12:12
  // 24 将导致第二天的第一个小时
  console.log(new Wdate('2022-04-08 12:12:12').setHours(24).getFormat()) // 2022-04-09 00:12:12
  ```



### setMinutes

- **功能**：设置日期中的分钟

- **参数**：(min)

  | 参数名 | 参数类型 | 参数默认值 | 参数说明                                                     |
  | ------ | -------- | ---------- | ------------------------------------------------------------ |
  | min    | Number   | 0          | 表示分钟的整数<br />期望值是 0-59，但允许其他值<br />-1 将导致前一小时的最后一分钟<br />60 将导致下一小时的第一分钟 |

- **用法**：

  ```javascript
  console.log(new Wdate('2022-04-08 12:12:12').setMinutes(25).getFormat()) // 2022-04-08 12:25:12
  console.log(new Wdate('2022-04-08 12:12:12').setMinutes(0).getFormat()) // 2022-04-08 12:00:12
  // -1 将导致前一小时的最后一分钟
  console.log(new Wdate('2022-04-08 12:12:12').setMinutes(-1).getFormat()) // 2022-04-08 11:59:12
  // 60 将导致下一小时的第一分钟
  console.log(new Wdate('2022-04-08 12:12:12').setMinutes(60).getFormat()) // 2022-04-08 13:00:12
  ```

  

### setSeconds

- **功能**：设置日期中的秒

- **参数**：(sec)

  | 参数名 | 参数类型 | 参数默认值 | 参数说明                                                     |
  | ------ | -------- | ---------- | ------------------------------------------------------------ |
  | sec    | Number   | 0          | 表示秒钟的整数<br />预期值为 0-59，但允许其他值：<br />-1 将导致前一分钟的最后一秒<br />60 将导致下一分钟的第一秒 |

- **用法**：

  ```javascript
  console.log(new Wdate('2022-04-08 12:12:12').setSeconds(25).getFormat()) // 2022-04-08 12:12:25
  console.log(new Wdate('2022-04-08 12:12:12').setSeconds(0).getFormat()) // 2022-04-08 12:12:00
  // -1 将导致前一分钟的最后一秒
  console.log(new Wdate('2022-04-08 12:12:12').setSeconds(-1).getFormat()) // 2022-04-08 12:11:59
  // 60 将导致下一分钟的第一秒
  console.log(new Wdate('2022-04-08 12:12:12').setSeconds(60).getFormat()) // 2022-04-08 12:13:00
  ```

  

### setMilliseconds

- **功能**：设置日期中的毫秒

- **参数**：(millisec)

  | 参数名   | 参数类型 | 参数默认值 | 参数说明                                                     |
  | -------- | -------- | ---------- | ------------------------------------------------------------ |
  | millisec | Number   | 0          | 表示毫秒的整数<br />预期值为 0-999，但允许其他值：<br />-1 将导致前一秒的最后一毫秒<br />1000 将导致下一秒的第一毫秒 |

- **用法**：

  ```javascript
  console.log(new Wdate('2022-04-08 12:12:12').setMilliseconds(25).toJSON()) // 2022-04-08T04:12:12.025Z
  console.log(new Wdate('2022-04-08 12:12:12').setMilliseconds(0).toJSON()) // 2022-04-08T04:12:12.000Z
  console.log(new Wdate('2022-04-08 12:12:12').setMilliseconds(-1).toJSON()) // 2022-04-08T04:12:11.999Z
  console.log(new Wdate('2022-04-08 12:12:12').setMilliseconds(1000).toJSON()) // 2022-04-08T04:12:13.000Z
  ```

  

### set

- **功能**：设置指定年月日时分秒毫秒

- **参数**：(size, unit)

  | 参数名 | 参数类型 | 参数默认值      | 参数说明   |
  | ------ | -------- | --------------- | ---------- |
  | size*  | Number   | 无              | 设置的数值 |
  | unit   | String   | date 默认设置日 | 单位       |

  unit参数类型说明：

  | ID   | 参数值      | 缩写    | 说明 |
  | ---- | ----------- | ------- | ---- |
  | 1    | year        | y       | 年   |
  | 2    | month       | M(大写) | 月   |
  | 3    | date        | d       | 日   |
  | 4    | hour        | H(大写) | 小时 |
  | 5    | minute      | m       | 分钟 |
  | 6    | second      | s       | 秒钟 |
  | 7    | millisecond | ms      | 毫秒 |

- **用法**：

  ```javascript
  const dateTime = "2022-04-04 12:12:12"
  console.log(new Wdate(dateTime).set(2).getFormat()) // 2022-04-02 12:12:12
  console.log(new Wdate(dateTime).set(2020, 'year').getFormat()) //2020-04-04 12:12:12
  console.log(new Wdate(dateTime).set(11, 'month').getFormat()) // 2022-11-04 12:12:12
  console.log(new Wdate(dateTime).set(11, 'date').getFormat()) // 2022-04-11 12:12:12
  console.log(new Wdate(dateTime).set(11, 'hour').getFormat()) // 2022-04-04 11:12:12
  console.log(new Wdate(dateTime).set(11, 'minute').getFormat()) // 2022-04-04 12:11:12
  console.log(new Wdate(dateTime).set(11, 'second').getFormat()) // 2022-04-04 12:12:11
  console.log(new Wdate(dateTime).set(11, 'millisecond').toJSON()) // 2022-04-04T04:12:12.011Z
  ```

  unit缩写模式

  ```javascript
  const dateTime = "2022-04-04 12:12:12"
  console.log(new Wdate(dateTime).set(2).getFormat())
  console.log(new Wdate(dateTime).set(2020, 'y').getFormat())
  console.log(new Wdate(dateTime).set(11, 'M').getFormat())
  console.log(new Wdate(dateTime).set(11, 'd').getFormat())
  console.log(new Wdate(dateTime).set(11, 'H').getFormat())
  console.log(new Wdate(dateTime).set(11, 'm').getFormat())
  console.log(new Wdate(dateTime).set(11, 's').getFormat())
  console.log(new Wdate(dateTime).set(11, 'ms').toJSON())
  ```



### setStartOf

- **功能**：设置时间为指定单位开始

- **参数**：(unit)

  | 参数名 | 参数类型 | 参数默认值 | 参数说明 |
  | ------ | -------- | ---------- | -------- |
  | unit   | String   | year       | 单位     |

  unit参数类型说明：

  | ID   | 参数值     | 缩写    | 说明                                     |
  | ---- | ---------- | ------- | ---------------------------------------- |
  | 1    | year       | y       | 当年年1月1日上午 00:00                   |
  | 2    | month      | M(大写) | 当月月1日上午 00:00                      |
  | 3    | date       | d       | 当天 00:00                               |
  | 4    | hour       | H(大写) | 当前时间，0 分、0 秒、0 毫秒             |
  | 5    | minute     | m       | 当前时间，0 秒、0 毫秒                   |
  | 6    | second     | s       | 当前时间，0 毫秒                         |
  | 8    | quarter    | Q(大写) | 当季度第一个月1日上午 00:00              |
  | 9    | week       | w       | 当周的第一天上午 00:00【星期日为第一天】 |
  | 10   | weekMonday | wm      | 当周的第一天上午 00:00【星期一为第一天】 |

- 用法

  ```javascript
  const dateTime =1615004552333 // "2021-03-06 12:22:32 333"
  console.log(new Wdate(dateTime).getFormat('yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setStartOf('y').getFormat('年：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setStartOf('M').getFormat('月：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setStartOf('d').getFormat('日：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setStartOf('Q').getFormat('季：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setStartOf('H').getFormat('时：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setStartOf('m').getFormat('分：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setStartOf('s').getFormat('秒：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setStartOf('w').getFormat('周[周日第一天]：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setStartOf('wm').getFormat('周[周一第一天]：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  // 2021-03-06 12:22:32 毫秒333 星期六 案例时间
  // 年：2021-01-01 00:00:00 毫秒0 星期五
  // 月：2021-03-01 00:00:00 毫秒0 星期一
  // 日：2021-03-06 00:00:00 毫秒0 星期六
  // 季：2021-01-01 00:00:00 毫秒0 星期五
  // 时：2021-03-06 12:00:00 毫秒0 星期六
  // 分：2021-03-06 12:22:00 毫秒0 星期六
  // 秒：2021-03-06 12:22:32 毫秒0 星期六
  // 周[周日第一天]：2021-02-28 00:00:00 毫秒0 星期日
  // 周[周一第一天]：2021-03-01 00:00:00 毫秒0 星期一
  ```

  

### setEndOf

- **功能**：设置时间为指定单位末尾

- **参数**：(unit)

  | 参数名 | 参数类型 | 参数默认值 | 参数说明 |
  | ------ | -------- | ---------- | -------- |
  | unit   | String   | year       | 单位     |

  unit参数类型说明：

  | ID   | 参数值     | 缩写    | 说明                                       |
  | ---- | ---------- | ------- | ------------------------------------------ |
  | 1    | year       | y       | 当年年12月31日下午 23:59:59                |
  | 2    | month      | M(大写) | 当月最后一天 23:59:59                      |
  | 3    | date       | d       | 当天 23:59:59                              |
  | 4    | hour       | H(大写) | 当前时间，59 分、59 秒、999 毫秒           |
  | 5    | minute     | m       | 当前时间，59秒、999 毫秒                   |
  | 6    | second     | s       | 当前时间，999毫秒                          |
  | 8    | quarter    | Q(大写) | 当季度第三个月最后一天日下午23:59:59       |
  | 9    | week       | w       | 当周最后一天下午23:59:59【星期日为第一天】 |
  | 10   | weekMonday | wm      | 当周最后一天下午23:59:59【星期一为第一天】 |

- 用法

  ```javascript
  const dateTime = 1646819487333 // "2022-03-06 12:22:32 333"
  console.log(new Wdate(dateTime).getFormat('yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setEndOf('y').getFormat('年：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setEndOf('M').getFormat('月：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setEndOf('d').getFormat('日：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setEndOf('Q').getFormat('季：yy-MM-dd HH:mm:ss 毫秒ms 星期wwQ'))
  console.log(new Wdate(dateTime).setEndOf('H').getFormat('时：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setEndOf('m').getFormat('分：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setEndOf('s').getFormat('秒：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setEndOf('w').getFormat('周【周六为最后一天】：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  console.log(new Wdate(dateTime).setEndOf('wm').getFormat('周【周日为最后一天】：yy-MM-dd HH:mm:ss 毫秒ms 星期ww'))
  
  // 2022-03-09 17:51:27 毫秒333 星期三
  // 年：2022-12-31 23:59:59 毫秒999 星期六
  // 月：2022-03-31 23:59:59 毫秒999 星期四
  // 日：2022-03-09 23:59:59 毫秒999 星期三
  // 季：2022-03-31 23:59:59 毫秒999 星期四Q
  // 时：2022-03-09 17:59:59 毫秒999 星期三
  // 分：2022-03-09 17:51:59 毫秒999 星期三
  // 秒：2022-03-09 17:51:27 毫秒999 星期三
  // 周【周六为最后一天】：2022-03-12 23:59:59 毫秒999 星期六
  // 周【周日为最后一天】：2022-03-13 23:59:59 毫秒999 星期日
  ```

  



# 四、版本更新记录

## V1.0.4

​	添加了以下方法

​	isAfter() 判断日期是否在指定日期之前

​	isSame()判断日期是否等于指定日期

​	isBefore()判断日期是否在指定日期之后

​	isValid() 判断传入日期是否合法

​	getQuarter() 获取季度

## V1.0.5

​	**添加了以下方法**

​	getLunarZodiac() 获取当年生肖

​	getLunar() 获取农历日期信息

​	getAge() 获取年龄

​	getCconstellation() 获取星座

## V1.0.6

​	清楚日志console.log

​	修改说明文档格式

​	**添加以下方法**

​	isToday() 判断是否是当天

​	isThisYear() 判断是否是当年

​	isThisMonth() 判断是否当月

​	isThisWeek() 判断是否本周

​	isWorkday() 判断是否工作日/是否周末

​	getDayOfYear() 获取当天是当年的第几天

## V1.0.7

​	说明文档排版优化

​	修改getFormatOne传参

​    代码压缩

## V1.0.8

​	修改方法名称getAllDateTime 为 getFormat
​	**添加以下方法**

​	isBetween() 判断时间是否在指定时间段

​	get() 返回年月日时分秒毫秒【根据参数返回】

​	getAdd() 返回日期加减天数的新日期

​	getDateDiff() 日期相差信息

​	getDiffDay() 日期相差自然天数 

​	toString() 返回包含时间信息的 string

​	toArray() 返回将日期转换数组

​	toJSON() 返回序列化为 ISO 8601 格式的字符串

​	toObject() 返回包含时间信息的 Object

​	setYear() 设置日期的年份

​	setMonth() 设置日期的月份

​	setDate() 设置日期中月的某一天

​	setHours() 设置日期的小时

​	setMinutes() 设置日期的分钟数

​	setSeconds() 设置日期的秒数

​	setMilliseconds() 设置日期的毫秒数

​	set() 设置年月日时分秒毫秒【根据参数设置】
