js获取每个月最后一天的两种方法

每次遇到不太熟悉的东西,就会莫名的心虚,如果再有需求确实需要,还会有反抗情绪,就比如说昨天的一个需求。

需求细节

报表数据项加链接,需要把起止时间携带到链接地址上,方便在对应地址的页面回显数据。不过报表数据页面时间是按月份操作的,携带的时间需要时年月日,并且起始时间为"年-月-01",截止时间为"年-月-该月最后一天"。

心理活动

直接想到的就是,一三五七八十腊,三十一天永不差;四六九十一,三十天;二月平年28天,闰年29天。闰年是能被4除尽的年份。好麻烦,需要知道每月最后一天,这么大代价。

PO姑娘说用现成的函数呀,心理默默念她好几遍,不知道有没有打喷嚏。

不情愿归不情愿,新想法还是会平心接受,按照这个思路老老实实的去查了。

居然还真有,服了服了。

今天早上拿着粉红糖给PO姑娘送过去,人家是C#后端转过来的,说是只做过一会会,一会会是两年。只能承认关公面前丢丑了。

获取每个月最后一天的2方法

第一种

思想:用下一个月1号对应的毫秒减去一天对应的毫秒(246060*10000)就可以获得本月的最后一天日期。

  getMonthLastDateFn(){
    let dateStr = '2020-02-06'; //需要获取此月最后一天的日期
    let dateObj = new Date(dateStr);
    let nextMonth = dateObj.getMonth()+1; //0-11,下一个月
    //设置当前日期为下个月的1号
    dateObj.setMonth(nextMonth);
    dateObj.setDate(1);  //1-31

    let nextMonthFirstDayTime = dateObj.getTime(); //下个月一号对应毫秒

    let theMonthLastDayTime = nextMonthFirstDayTime-24*60*60*1000;  //下个月一号减去一天,正好是这个月最后一天

    let theMonthDay = (new Date(theMonthLastDayTime)).getDate();

    return theMonthDay;
  }
第二种

思想:利用Date函数对传入的日期参数(参数值为0),new Date(year,month,date),month取值范围为0-11(这样直接传入需求的月份就是下一个月)。

参考依据:

http://es5.github.io/#x15.9.1.12

在这里插入图片描述
先获取对应年-月-1号,再用1号加上传入的date后,减去1;这样如果date传入的是0,经过这样的计算得到的就是这个月的最后一天的日期。

getMonthLastDateFn(){
    let dateStr = '2020-02-06'; //需要获取此月最后一天的日期
    
    let dateObj = new Date('2020','02',0);  //注意:这里传入月份取值范围是0-11

    let theMonthDay = dateObj.getDate();

    return theMonthDay;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值