UNPKG

wh-date

Version:

解决C端苹果时间显示兼容问题,常用C端时间处理方法

1,856 lines (1,213 loc) 62 kB
# 一、功能 **介绍**: 处理日期和时间,主要包括格式化日期和时间、一些在开发中一些经常对时间处理和判断、公历日期转换农历日期、 解决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 | 返回自 197011 日午夜以来与指定日期的毫秒数/秒数 | | | 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` 返回(0123456),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】、46911月【30】、135781012月【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-41-3月返回14-6月返回27-9月返回310-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 | 当年年11日上午 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 | 当年年1231日下午 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() 返回包含时间信息的 stringtoArray() 返回将日期转换数组 ​ toJSON() 返回序列化为 ISO 8601 格式的字符串 ​ toObject() 返回包含时间信息的 Object ​ setYear() 设置日期的年份 ​ setMonth() 设置日期的月份 ​ setDate() 设置日期中月的某一天 ​ setHours() 设置日期的小时 ​ setMinutes() 设置日期的分钟数 ​ setSeconds() 设置日期的秒数 ​ setMilliseconds() 设置日期的毫秒数 ​ set() 设置年月日时分秒毫秒【根据参数设置】