JS获取近N天或N月或N年的时间和两个时间段的总天数

  将之前写的JS获取近3个月、近1个月、近1周的日期范围进行整合并进一步优化修改

 1 function getDateTime(num,dateName,startTime){
 2     //num 为所传递的数目参数;
 3     //dateName 为所传递的年(year) 月(month) 日(day)的参数;
 4     //比如3天,则num为3,date为day,一个月,则num为1,date为mounth
 5     //startTime 为所传递的最开始的时间参数,字符串形式,默认为当天
 6     var dateObj = {};
 7     dateObj.now = startTime == undefined ? new Date() : new Date(startTime);
 8     var year = dateObj.now.getFullYear();
 9     var month = dateObj.now.getMonth() + 1;    //0-11表示1-12月
10     var day = dateObj.now.getDate();
11     var endDate;
12     if(date == "day"){
13         endDate = startTime == undefined ? new Date() : new Date(startTime);
14         endDate.setDate(endDate.getDate() - num);
15     }
16     if(date == "year"){
17         endDate = (year - num) + "/" + month + "/" +day;
18         endDate = new Date(endDate);
19     }
20     if(date == "month"){
21         //n个月前所在月的总天数
22         var lastMonthDay;
23         if(month - num <= 0){    //当近n个月在上一年的时间时
24             lastMonthDay = new Date((year - 1), (12 - (num - month)), 0).getDate();
25             if(lastMonthDay < day){    //n个月前所在的总天数小于现在的天日期
26                 endDate = (year - 1) + "/" + (12 - (num - month)) + "/" + lastMonthDay;
27             }else{
28                 endDate = (year - 1) + "/" + (12 - (num - month)) + "/" + day;
29             }
30         }else{
31             lastMonthDay = new Date(year, (month - num), 0).getDate();
32             if(lastMonthDay < day){    //n个月前所在的总天数小于现在的天日期
33                 endDate = year + "/" + (month - num) + "/" + lastMonthDay;
34             }else{
35                 endDate = year + "/" + (month - num) + "/" + day;
36             }
37         }
38         endDate = new Date(endDate);
39     }
40     endDate.setDate(endDate.getDate() + 1);    //最开始的那天也算一天,所以整体需要减掉1天;
41     dateObj.last = endDate;
42     // 开始时间和结束时间的总的时间天数,+1 是因为本身的那天也算一天
43     dateObj.temp  = (dateObj.now.getTime() - dateObj.last.getTime()) / 24 / 60 / 60 / 1000 + 1;
44     return dateObj;
45 }

使用的时候如下:

1 var a = getDateTime(15,"day","2021/3/9");  //2021年3月9日开始
2 var b = getDateTime(7,"month");  //当天开始

 

posted @ 2021-03-10 14:28  傅丹辰cds  阅读(636)  评论(0编辑  收藏  举报