js 获取 对应当前时间 的本周,本月,本季的起始时间

  1  var now = new Date(); // 当前日期
  2         var nowDayOfWeek = now.getDay(); // 今天本周的第几天
  3         var nowDay = now.getDate(); // 当前日
  4         var nowMonth = now.getMonth(); // 当前月
  5         var nowYear = now.getYear(); // 当前年
  6         nowYear += (nowYear < 2000) ? 1900 : 0;
  7 var DateUtil = {
  8     /**
  9      * 获得当前日期
 10      * 
 11      * @returns
 12      */
 13     getNowDay : function() {
 14         return this.formatDate(new Date());
 15     },
 16     /**
 17      * 获得本周的开始时间
 18      * 
 19      * @returns
 20      */
 21     getStartDayOfWeek : function() { //获取到当前的年 ,月  ,当前日+1-当前日为本周的第几天 时间格式化后 即可获取星期一的 时间
 22         var day = nowDayOfWeek || 7;
 23         return this.formatDate(new Date(now.getFullYear(), nowMonth, nowDay + 1 - day));
 24     },
 25     /**
 26      * 获得本周的结束时间
 27      * 
 28      * @returns
 29      */
 30     getEndDayOfWeek : function() { //获取到当前的年 ,月  ,当前日+7-当前日为本周的第几天 时间格式化后 即可获取星期日的 时间
 31         var day = nowDayOfWeek || 7;
 32         return this.formatDate(new Date(now.getFullYear(), nowMonth, nowDay + 7 - day));
 33     },
 34     /**
 35      * 获得本月的开始时间
 36      * 
 37      * @returns
 38      */
 39     getStartDayOfMonth : function() {// 获取到 当前 年,月 ,日=1 时间格式化后 即可
 40         var monthStartDate = new Date(nowYear, nowMonth, 1);
 41         return this.formatDate(monthStartDate);
 42     },
 43     /**
 44      * 获得本月的结束时间
 45      * 
 46      * @returns
 47      */
 48     getEndDayOfMonth : function() {  //获取 当前 年,月,本月天数 时间格式化后 即可
 49         var monthEndDate = new Date(nowYear, nowMonth, this.getMonthDays());
 50         return this.formatDate(monthEndDate);
 51     },
 52     /**
 53      * 获得本月天数
 54      * 
 55      * @returns
 56      */
 57     getMonthDays : function() {  //获取本月天数 用后一月的格式化时间减去当前月的格式化时间 除以1天的毫秒数 即可
 58         var monthStartDate = new Date(nowYear, nowMonth, 1);
 59         var monthEndDate = new Date(nowYear, nowMonth + 1, 1);
 60         var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
 61         return days;
 62     },
 63         /**
 64      * 获得本季度开始
 65      * 
 66      * @returns
 67      */
 68     getQuarterStart :function(){ //判断当月的月份处于哪个季度的范围 赋值给变量   日期为1 时间格式化即可
 69         let m = 0;
 70         if(nowMonth<3){//012
 71             m = 0
 72         }else if(2<nowMonth && nowMonth<6){//345
 73             m =3
 74         }else if(5<nowMonth && nowMonth<8){//678
 75             m = 6
 76         }else if(nowMonth>8){ //9 10 11
 77             m = 9
 78         }
 79         let quarterStart = new Date(nowYear,m,1)
 80         return this.formatDate(quarterStart)
 81 
 82     },
 83             /**
 84      * 获得本季度结束
 85      * 
 86      * @returns
 87      */
 88      getQuarterEnd :function(){  //同上 但是需要获取季度结束月的后一月减去一天的时间 就能获取 本季度的格式化时间了
 89         let m = 0;
 90         if(nowMonth<3){//012
 91             m = 3
 92         }else if(2<nowMonth && nowMonth<6){//345
 93             m =6
 94         }else if(5<nowMonth && nowMonth<8){//678
 95             m = 9
 96         }else if(nowMonth>8){ //9 10 11
 97             m = 0
 98         }
 99         let quarterEnd = new Date(nowYear,m,1).getTime()-(60*60*24*1000)
100         return this.formatDate(new Date(quarterEnd))
101 
102     },
103     /**
104      * @param 日期格式化
105      * @returns {String}
106      */
107     formatDate : function(date) {
108         var myyear = date.getFullYear();
109         var mymonth = date.getMonth() + 1;
110         var myweekday = date.getDate();
111  
112         if (mymonth < 10) {
113             mymonth = "0" + mymonth;
114         }
115         if (myweekday < 10) {
116             myweekday = "0" + myweekday;
117         }
118         return (myyear + "-" + mymonth + "-" + myweekday);
119     }
120 };
121 console.log('本周开始时间:',DateUtil.getStartDayOfWeek())
122 console.log('本周结束时间:',DateUtil.getEndDayOfWeek())
123 console.log('本月开始时间:',DateUtil.getStartDayOfMonth())
124 console.log('本月结束时间:',DateUtil.getEndDayOfMonth())
125 //由于季度划分有两种  这里是按照正常工作时间划分的   按照农历的话 控制下 判断条件 和 赋值 即可
126 //按照标准工作时间的季度划分  为1-3 4-6 7-9 10-12 为四个季度
127 console.log('本季开始时间:',DateUtil.getQuarterStart())
128 console.log('本季结束时间:',DateUtil.getQuarterEnd())

结果如下

 

posted @ 2022-01-20 16:50  ComeIntoBud  阅读(697)  评论(0编辑  收藏  举报