wh-date v1.0.8
一、功能
介绍:处理日期和时间,主要包括格式化日期和时间、一些在开发中一些经常对时间处理和判断、公历日期转换农历日期、 解决C端苹果时间显示兼容问题【实例化参数为时间戳、-
横杠、/
斜杠日期字符串】
安装:
npm install wh-date
实例化方式:
const Wdate = require('wh-date')
const newData = new Wdate(); // 默认本地时间
const newData = new Wdate(milliseconds/seconds);
const newData = new Wdate(dateString);
用法:
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
表示日期方法
二、方法列表
方法 | 功能说明 |
---|---|
常规方法 | |
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) |
扩展方法 | |
getMonthCountDay | 返回当月最后一天数 |
getAllValue | 返回年月日时分秒毫秒 |
getQuarter | 返回季节(1-4) |
getAge | 返回年龄(大于等0的整数) |
getCconstellation | 返回星座 |
getDayOfYear | 返回日期是当年的多少天 |
格式化数据方法 | |
getTimeFrame | 返回不同时间段特定文案,默认AM(上午0-12点) , PM(下午12-24点) |
getAllDate | 返回格式化日期,默认返回yyy-MM-dd格式 |
getAllTime | 返回格式化日期,默认返回hh:mm:ss格式 |
getAllDateTime | 返回格式化日期,默认返回yyy-MM-dd hh:mm:ss格式 |
getFormatOne | 返回格式化日期: 当天日期:显示hh:ss 7天内:显示星期ww 7天前:显示yyy-MM-dd hh:mm:ss |
getFuture | 返回传入时间戳有多少天、时、分、秒、时间戳, |
农历日期方法 | |
getLunarZodiac | 返回农历生肖鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪 |
getLunar | 返回农历日期数字/汉字/干支/润月信息 |
日期判断方法 | |
isValid | 判断日期是否合法 |
isLeapYear | 判断是否是闰年 |
isBefore | 判断日期在指定日期前 |
isSame | 判断日期是否相同 |
isAfter | 判断日期在指定日期后 |
isThisYear | 判断是否是当年 |
isThisMonth | 判断是否是当月 |
isThisWeek | 判断是否是当前周 |
isToday | 判断是否是当天 |
isWorkDay | 判断是否是工作日/周末 |
三、方法说明
1、常规方法
getYear
功能:获取年份
参数:无
返回值:返回年份
返回数据类型:
Number
用法:
const newData = new Wdate() console.log(newData.getYear()) // 2022
getMonth
功能:获取月份
参数:(isFillZero)
参数名 参数类型 参数默认值 参数说明 isFillZero Boolean false 是否补0,小于10前边补零 返回值:返回月份1-12|01-12
返回数据类型:
Number
|String
用法:
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
用法:
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
用法:
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
用法:
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
用法:
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
用法:
const newData = new Wdate(1643264411611) console.log(newData.getMilliseconds()) // 611
getTime
功能:获取时间戳
参数:(length)
参数名 参数类型 参数默认值 参数说明 length Number 13 13毫秒、10秒 返回值:返回时间戳毫秒、秒,返回数据类型:
Number
用法:
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
返回大写(一、二、三、四、五、六、日)用法:
const newData = new Wdate() // 当前日期2022年1月27日 13:05:03 console.log(newData.getDay()) // 四 console.log(newData.getDay(false)) // 4
2、扩展方法
getMonthCountDay
功能:获取当月总天数
参数:无
返回值:2月【28】、2月闰年【29】、4、6、9、11月【30】、1、3、5、7、8、10、12月【31】
返回数据类型:
Number
用法:
const newData = new Wdate('2008-02-01 10:02:02') console.log(newData.getMonthCountDay()) // 29 const newData = new Wdate() console.log(newData.getMonthCountDay()) // 31
getAllValue
功能:获取日期详细数据
参数:(isFillZero)
参数名 参数类型 参数默认值 参数说明 isFillZero Boolean false 是否补0,小于10前边补零 返回值:
{ year: 2022, // 年 month: 1, // 月 date: 27, // 日 hours: 14, // 时 minutes: 46, // 分 seconds: 29, // 秒 timestamp: 1643265989971 // 时间戳毫秒 }
返回数据类型:
Object
用法:
const newData = new Wdate() console.log(newData.getAllValue()) //打印结果 { year: 2022, month: 1, date: 27, hours: 14, minutes: 46, seconds: 29, timestamp: 1643265989971 } console.log(newData.getAllValue(true)) //打印结果 不足10 补零 { year: 2022, month: '01', date: 27, hours: 14, minutes: 46, seconds: 29, timestamp: 1643265989971 }
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
【自定义格式】用法:
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
用法:
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 用法:
const newData = new Wdate('1992-2-22')
console.log(newData.getCconstellation()) // 双鱼座
getDayOfYear
功能:返回是当年的多少天
参数:无
返回值:1-366
返回数据类型:
Number
用法:
const newData = new Wdate('2022-01-05') console.log(newData.getDayOfYear()) // 5
3、格式化数据方法
format格式化日期字符说明
传入字符串,更新指定字符串替换相应的值进行显示
参数字符串 | 说明 |
---|---|
yy | 年 |
MM | 月 |
dd | 天 |
HH | 小时 24小时制 |
hh | 小时 12小时制 |
mm | 分钟 |
ss | 秒 |
ww | 星期 |
getTimeFrame
功能:根据时间段返回特定文案
参数:(hour, text)
hour和text数字长度必须一致,text定义时间范围的下标对应hour数字下标里面展示的内容
参数名 参数类型 参数默认值 参数说明 hour Array 'AM', 'PM' 定义显示文案 text Array {start: 0, end: 12},{start: 12, end: 24} 定义时间段范围 返回值:AM,PM ,自定义文案
返回数据类型:String
用法:
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
自定义指定时间显示指定文案
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
用法:
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
用法:
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
getAllDateTime
功能:格式化日期时间
参数:(format,isFillZero)
参数名 参数类型 参数默认值 参数说明 format String yy-MM-dd HH:mm:ss 定义日期时间格式 isFillZero Boolean true 是否补0 返回值:年-月-日 时:分:秒、自定义格式
返回数据类型:
String
用法:
const newData = new Wdate() console.log(newData.getAllDateTime()) // 2022-01-27 14:57:51 默认格式 console.log(newData.getAllDateTime('yy年')) // 2022年 console.log(newData.getAllDateTime('yy年MM月')) // 2022年01月 console.log(newData.getAllDateTime('yy年MM月dd日')) // 2022年01月27日 console.log(newData.getAllDateTime('yy年MM月dd日', false)) //2022年1月27日 console.log(newData.getAllDateTime('MM月yy年')) //01月2022年 console.log(newData.getAllDateTime('yy.MM.dd')) //2022.01.27 console.log(newData.getAllDateTime('yy.MM.dd hh.mm.ss')) // 2022.01.27 03:03:46 console.log(newData.getAllDateTime('yy.MM.dd hh时mm分ss秒 星期ww')) // 2022.01.27 04时07分41秒 星期四 console.log(newData.getAllDateTime('yy.MM.dd hh时mm分ss秒 星期ww', false)) // 2022.1.27 4时7分41秒 星期四 console.log(newData.getAllDateTime('hh时mm分ss秒 星期ww')) // 04时08分47秒 星期四 console.log(newData.getAllDateTime('星期ww hh时mm分ss秒')) // 星期四 04时08分47秒 console.log(newData.getAllDateTime('今天是dd日, HH时mm分')) //今天是27日, 16时10分
getFormatOne
功能:格式化日期时间, 7天前日期显示日期时间格式、当天显示时间格式、7天内显示星期格式
参数:(format,isFillZero)
参数名 参数类型 参数默认值 参数说明 format Object { sevenIn: '星期ww', sevenOut: 'yy-MM-dd HH:mm:ss', today: '今天是HH:ss:mm'} 定义7天前日期时间格式 isFillZero Boolean true 是否补0 format参数说明:参数说明参考format格式化日期字符说明
{ sevenIn: '星期ww', // 7天内时间显示格式 sevenOut: 'yy-MM-dd HH:mm:ss', // 七天以外显示格式 today: '今天是HH:ss:mm' // 当天显示格式 }
返回值:年-月-日 时:分:秒、星期一-星期日、时:分:秒/ 自定义格式
返回数据类型:
String
用法:
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
用法:
主要用于做倒计时使用,根据倒计时的时间戳,格式化显示天、时、分、秒
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
用法:
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
用法:
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
用法:
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
用法:
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
用法:
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
用法:
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
用法:
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
isThisYear
功能:判断是否当年
参数:无
返回值:true/false
返回数据类型:
Boolean
用法:
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
用法:
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
用法:
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
用法:
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
用法:
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
四、版本更新记录
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传参
代码压缩