wh-date
Version:
解决C端苹果时间显示兼容问题,常用C端时间处理方法
1,856 lines (1,213 loc) • 62 kB
Markdown
# 一、功能
**介绍**:
处理日期和时间,主要包括格式化日期和时间、一些在开发中一些经常对时间处理和判断、公历日期转换农历日期、 解决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() 设置年月日时分秒毫秒【根据参数设置】