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

需求细节

报表数据项加链接,需要把起止时间携带到链接地址上,方便在对应地址的页面回显数据。不过报表数据页面时间是按月份操作的,携带的时间需要时年月日,并且起始时间为"年-月-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

lua获取每月的最后一天 js获取每个月最后一天_lua获取每月的最后一天


先获取对应年-月-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;
  }