日期时间工具类 Rdate

451 阅读6分钟

很就没有写文章了,但是每天都逛掘金,默默的点赞大佬,然后默默的流下了没有技术的眼泪,庆幸的是,最近小编重启了18年沉浸已久的 date项目,其实就是小编两年前无聊弄的一个日期时间工具类,尴尬,千疮百孔, 最近修修补补,总算差不多了,取名 Rdate,还写了个文档,项目地址:github.com/shufei021/d…,如果觉得可以点个 star,谢谢! 话不多说,上货!

引入rdate.js 就干活

const date = new Rdate()

以我最近项目中常需求的功能开始:

  • 日期显示格式:08月30日(周日)
  • 日期显示格式:08/28 19:49(星期五)

date.format('2020-8-30','MM月dd日(W)')//0830日(周日)
date.format('2020-08-28 19:49','MM/dd hh:mm(w)')//08/28 19:49(星期五)

format

日期格式化方法,也是Rdate的核心方法,主要功能是 : 格式化 当前时间 | 指定时间

格式化当前时间: 无参时返回格式为默认的yyyy-MM-dd hh:mm:ss

date.format()

格式化当前时间: 使用自定义格式

date.format('yyyy-MM-dd')// 2020-08-30 (测试时间:2020-08-30)

格式化指定时间: 第一个参数为日期,第二个参数为格式即可

date.format('2020-1-1','yyyy-MM-dd hh:mm:ss')//2020-01-01 00:00:00

星期/时辰

连续的w/W/t会被替换成对应的星期/周/时辰

date.format('当前是yyyy年MM月dd日 hh时mm分ss秒 w t')

模板

有时候难免需要使用 特殊的字母,例如:yyyy/YYYY/MM/dd/HH/hh/ss/w/W/t等,为此提供模板字符 [],特殊字符只需放入其中即可。

date.format('[YYYY]')// YYYY

日期时间常见功能

本周第一天

date.getCurWeekFirstDay()

本周最后一天

date.getCurWeekLastDay()

获取当前时间所在月有多少天

date.getMonthDays()

获取指定时间所在月有多少天

指定时间可以是 {String | Number | Date},例如 2020/8/8 | 1598792416228 | new Date()

date.getMonthDays(指定时间)

获取当前时间的前 n 天 或 后 n 天 的日期

date.getGapDate(-1)// 昨天 
date.getGapDate(-2)// 昨前天  
date.getGapDate(1// 明天 
date.getGapDate()  // 今天

获取指定时间的前 n 天 或 后 n 天 的日期

date.getGapDate(1,'2020-02-27')// 2020-02-28
date.getGapDate(2,'2020-02-27')// 2020-02-29
date.getGapDate(3,'2020-02-27')// 2020-03-01

date.getGapDate(-1,'2020-02-27')// 2020-02-26
date.getGapDate(-2,'2020-02-27')// 2020-02-25
date.getGapDate(-3,'2020-02-27')// 2020-02-24


// 有三个参数时候,第一个参数 `n`,第二个参数 给定日期 `dt`,第三个参数格式 `ft`

date.getGapDate(2,new Date(),'yyyy/MM/dd HH:mm'// "2020/08/31 18:52" (测试时间:2020/8/29)
date.getGapDate(2,'2020-02-27','yyyy/MM/dd HH:mm'// "2020/02/29 00:00" 
date.getGapDate(2,'2020-02-27','yyyy/MM/dd HH:mm w')// "2020/02/29 00:00 星期六"

获取本周首末日期,前推后推 n 周的首末日期

/**
 * {Number } n
 * {String | Number | Date}
 * dt{String} ft
 */
// 无参 :获取的是当前时间(默认格式年月日)
date.getGapWeek()//{first: "2020-08-24", last: "2020-08-30"} (测试时间:2020/8/29)

//----------------------------------------------------------

// 只有第一个参数时候,以当前时间为准
date.getGapWeek(1)// {first: "2020-08-31", last: "2020-09-06"} (测试时间:2020/8/29)
// 只有第一个参数时候,以当前时间为准
date.getGapWeek(2)// {first: "2020-09-07", last: "2020-09-13"} (测试时间:2020/8/29)

// 只有第一个参数时候,以当前时间为准
date.getGapWeek(-1)// {first: "2020-08-17", last: "2020-08-23"} (测试时间:2020/8/29)
// 只有第一个参数时候,以当前时间为准
date.getGapWeek(-2)// {first: "2020-08-10", last: "2020-08-16"} (测试时间:2020/8/29)

//-------------------------------------------------------------

// 只有两个参数时候,以给定的`dt`时间为准

date.getGapWeek(1,'2020-02-27')// {first: "2020-03-02", last: "2020-03-08"}
date.getGapWeek(2,'2020-02-27')// {first: "2020-03-09", last: "2020-03-15"}
date.getGapWeek(3,'2020-02-27')// {first: "2020-03-16", last: "2020-03-22"}

date.getGapWeek(-1,'2020-02-27')// {first: "2020-02-17", last: "2020-02-23"}
date.getGapWeek(-2,'2020-02-27')// {first: "2020-02-10", last: "2020-02-16"}
date.getGapWeek(-3,'2020-02-27')// {first: "2020-02-03", last: "2020-02-09"}

//-------------------------------------------------------------

// 有三个参数时候,第一个参数 `n`,第二个参数 给定日期 `dt`,第三个参数格式 `ft`

date.getGapWeek(2,new Date(),'MM/dd'// {first: "09/07", last: "09/13"} (测试时间:2020/8/29)
date.getGapWeek(-2,'2020-02-27','yyyy/MM/dd'// {first: "2020/02/10", last: "2020/02/16"}
date.getGapWeek(-2,'2020-02-27','yyyy/MM/dd W')
// {first: "2020/02/10 周一", last: "2020/02/16 周日"}
date.getGapWeek(-2,'2020-02-27','yyyy/MM/dd w')
// {first: "2020/02/10 星期一", last: "2020/02/16 星期日"}

获取(指定日期 | 当前日期) 对应年份的第几周

//当前日期对应年份的第几周
date.getYearWeek()
//指定日期`dt`对应年份的第几周
date.getYearWeek(dt)

获取(给定日期 | 当前日期) 所在对应月份的第几周

// 无参:返回当前时间所在月份的第几周
date.getMonthWeek() // 5 (测试时间:2020-08-29)

// 1参:获取当前时间对应数字的星期
date.getMonthWeek('2020/10/15') // 3

获取(给定日期 | 当前日期) 所在对应年份的第几周

// 无参:返回当前时间所在年份的第几周
date.getYearWeek() // 35 (测试时间:2020-08-29)

// 1参:获取指定时间所处对应年份的第几周
date.getYearWeek('2020/10/15') // 42

获取 (给定日期 | 当前日期) 所在对应季度的第几周

// 无参:返回当前时间所在的季度中的第几周
date.getQuarterWeek() // 9 (测试时间:2020-08-29)

// 1参:获取指定时间所处对应季度的第几周getMonthDays
date.getQuarterWeek('2020/10/15') // 2

获取(给定日期|当前日期) 所在月的星期相关信息

date.getMonthWeekInfo()

date.getMonthWeekInfo(dt)

更改api请去文档查看 项目地址:github.com/shufei021/d…

总结

小编能力有限,难免某些地方有些疏漏,如果你有更好的点子,欢迎留言,文中若有不准确或错误的地方,欢迎指出!后期会持续维护。