js如何获取到本周的第一天和最后一天,本月的第一天和最后一天以及本季度的第一天和最后一天...

it2025-01-10  23

1、首先来一个自己公司项目的源码:

项目需求描述: 从20150712日开始, ,

需求①:根据当前时间返回每一周 、周一~周日的日期(需返回2种格式 格式1:7月13日,格式2:2015-07-13)

需求②:返回当前时间本周的,周一早上9:00:00和周日的23:59:59

需求③:计算出当前时间离20150712日有多少周

需求④:在需求3基础上,如果大于一周,需要返回历史周的周一早上9:00:00和周日的23:59:59  (在此用二位数组)

[html]  view plain copy print ? function GetWeekDate(time){      var now = new Date(time); //当前日期       this.nowDayOfWeek = now.getDay(); //今天本周的第几天      this.nowYear = now.getYear(); //当前年       this.nowMonth = now.getMonth(); //月       this.nowDay = now.getDate(); //日       this.beginHour="09:00:00";      this.endHour="23:59:59";        this.nowYear += (this.nowYear < 2000) ? 1900 : 0; //      this.nowDayOfWeek = this.nowDayOfWeek==0?7:this.nowDayOfWeek; // 如果是周日,就变成周七  }    GetWeekDate.prototype.date2str=function(x,y){//date2str(new Date(curTime),"yyyy-MM-dd")      var z ={y:x.getFullYear(),M:x.getMonth()+1,d:x.getDate(),h:x.getHours(),m:x.getMinutes(),s:x.getSeconds()};        return y.replace(/(y+|M+|d+|h+|m+|s+)/g,function(v) {return ((v.length>1?"0":"")+eval('z.'+v.slice(-1))).slice(-(v.length>2?v.length:2))});    }    GetWeekDate.prototype.formatDate=function(date){//格局化日期:yyyy-MM-dd       var myyear = date.getFullYear();       var mymonth = date.getMonth()+1;       var myweekday = date.getDate();      //alert("formatDate"+myyear+":"+mymonth+":"+myweekday)      if(mymonth < 10){           mymonth = "0" + mymonth;       }       if(myweekday < 10){           myweekday = "0" + myweekday;       }       return (myyear+"-"+mymonth + "-" + myweekday);   }    GetWeekDate.prototype.getWeekStartDate=function(){ //获得本周的开端日期      var weekStartDate = new Date(this.nowYear, this.nowMonth, this.nowDay - this.nowDayOfWeek+1);      return this.formatDate(weekStartDate);   }     GetWeekDate.prototype.getWeekEndDate=function(){//获得本周的停止日期      var weekEndDate = new Date(this.nowYear, this.nowMonth, this.nowDay + (6 - this.nowDayOfWeek+1));      return this.formatDate(weekEndDate);   }    GetWeekDate.prototype.getAWeedkYMD=function(){//获得本周周一~周日的年月日      var ymdArr=[];      for (var i = 0; i < 7; i++) {          ymdArr[i]=[];          //ymdArr[i][0]=this.formatDate(new Date(this.nowYear, this.nowMonth, this.nowDay - this.nowDayOfWeek+i+1));          ymdArr[i][0]=this.date2str(new Date(this.nowYear, this.nowMonth, this.nowDay - this.nowDayOfWeek+i+1),'yyyy-MM-dd');          ymdArr[i][1]=this.date2str(new Date(this.nowYear, this.nowMonth, this.nowDay - this.nowDayOfWeek+i+1), 'MM月dd日');      };            return ymdArr;  }    GetWeekDate.prototype.getQishu=function(time){//获得本周是指定日期(7.12日)的第几周      var oNDate=new Date(time); //系统当前时间      var oEDate=new Date('2015/7/12 23:59:59');      var diffoNDate.getTime()-oEDate.getTime();      //console.log(diff)      //console.log("相差天:"+diff/(24*60*60*1000))      //console.log("相差期数:"+parseInt(diff/(24*60*60*1000))/7)      //console.log("取整期数:"+Math.floor(parseInt(diff/(24*60*60*1000))/7))      return (diff/(24*60*60*1000))/7;  }    GetWeekDate.prototype.getWeeksDates=function(time){//获取历史周排行的周一到周日时间段      var qishu = (this.qishu || this.qishu==0)?this.qishu:this.getQishu(time);      //var qishu=this.getQishu(time);            var WeeksTimes=[];//存放时间的二维数组          minYear=2015,          minMonth=7,          minDay=12;      for (var i = 0; i<qishu; i++) {          var sday;          var eday;          WeeksTimes[i]=[];          if(i==0){//如果离2015-07-12只相差1期              sday=minDay+1; //开始时间+1天          }else{//如果离2015-07-12相差期数>1              sday=minDay+1+7*i;          }          eday=minDay+7*(i+1);//结束时间+7天          WeeksTimes[i][0]=this.formatDate(new Date(minYear,minMonth-1,sday))+" "+this.beginHour;          WeeksTimes[i][1]=this.formatDate(new Date(minYear,minMonth-1,eday))+" "+this.endHour;      };      //如果是一周的周日就不要减去一期      return WeeksTimes;        }    GetWeekDate.prototype.todayData=function(json){//处理tender_list_week.jsp页面      var oQishu=$('.qishu');          iQishu=this.qishu;//期数+1是因为,相差0期就是第1期          oThisWeekListBtn=$('.total_list_btn'),//查看本周排行榜按钮          sTime=this.getWeekStartDate()+" "+this.beginHour,          eTime=this.getWeekEndDate()+" "+this.endHour;      //1、修改期数          //console.log("相差周:"+iQishu);      if(/^[1-9]\d*$/.test(iQishu) || iQishu==0){//整数 +3          oQishu.html(iQishu*1+3);       }else{          oQishu.html(Math.floor(iQishu)*1+4);      }      oThisWeekListBtn.attr("onclick","showWeekList('"+sTime+"','"+eTime+"')");//2、修改查看本周排行榜的起止时间  }    GetWeekDate.prototype.historyData=function(time){//处理tender_list_week.jsp页面      var oQishu=$('.qishu'),          oDateList=$('#dateList'), //顶部导航时间          oHistoryList=$('#history_cont'),//历史周          aThisWeekYMD=this.getAWeedkYMD(),//本周周一~周日的年月日          aThisWeekDates=this.getWeeksDates(time);//获取历史周排行的周一到周日时间段          iQishu=this.qishu;          //console.log("相差周:"+iQishu);            //1、修改期数,+4是加上前3期,在+1是如果间隔3期,当前就是第4期          //如果时间23:59:59是正整数(-1),如果是0整数(3),如果是非整数(向下取整),或负数(向上取整)但是负数不考虑      //oQishu.html(iQishu*1+3);      if(/^[1-9]\d*$/.test(iQishu) || iQishu==0){//整数 +3          oQishu.html(iQishu*1+3);       }else{          oQishu.html(Math.floor(iQishu)*1+4);      }                  //2、给顶部时间追加时间      for (var i = 0; i < aThisWeekYMD.length; i++) {          var str='<li data-time="'+aThisWeekYMD[i][0]+'">'+aThisWeekYMD[i][1]+'</li>';          $(str).appendTo(oDateList);      };            //3、给历史周排行榜添加周期数      if(this.qishu>1){//如果相差的期数大于1期          //console.dir(aThisWeekDates)          for (var j = 0; j < aThisWeekDates.length-1; j++) {              var iQiNum=j+4;              var str='<li οnclick="showWeekList(\''+aThisWeekDates[j][0]+'\',\''+aThisWeekDates[j][1]+'\')">第'+iQiNum+'期</li>';              $(str).prependTo(oHistoryList);          };      }        }    GetWeekDate.prototype.init=function(time){      var iQishu=this.getQishu(time),//期数+1是因为,相差0期就是第1期          json={};      json.qishu=iQishu;      this.qishu=iQishu;        if($('#pageType').val()=="today"){//如果是tender_list_week.jsp页面          if(new Date(time).getTime() < new Date('2015/07/12 23:59:59').getTime()){//特殊处理时间小于20150712              $('.qishu').html('3');              $('.total_list_btn').attr("onclick","showWeekList('2015-07-03 09:00:00','2015-07-12 23:59:59')");              return false;          }          this.todayData(json);      }else if($('#pageType').val()=="history"){          if(new Date(time).getTime() < new Date('2015/07/12 23:59:59').getTime()){//特殊处理时间小于20150712              $('.qishu').html('3');              $('#dateList').addClass('dateList2').html('<li data-time="2015-07-03">07月03日</li><li data-time="2015-07-04">07月04日</li><li data-time="2015-07-05">07月05日</li><li data-time="2015-07-06">07月06日</li><li data-time="2015-07-07">07月07日</li><li data-time="2015-07-08">07月08日</li><li data-time="2015-07-09">07月09日</li><li data-time="2015-07-10">07月10日</li><li data-time="2015-07-11">07月11日</li><li data-time="2015-07-12">07月12日</li>');              $('#history_cont').html('<li onclick="showWeekList(\'2015-06-26 09:00:00\',\'2015-07-02 23:59:59\')">第二期</li><li onclick="showWeekList(\'2015-06-19 12:00:00\',\'2015-06-25 23:59:59\')">第一期</li>');              return false;          }          this.historyData(time);      }      //console.dir(this.getWeeksDates(time));  };                 

2、JS获取本周、本季度、本月、上月的开端日期、停止日期

[html]  view plain copy print ? <!DOCTYPE html>  <html lang="en">  <head>      <meta charset="UTF-8" />      <title>Document</title>      <script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>      <script>      /**  * 日期范围工具类  */  var dateRangeUtil = (function () {      /***      * 获得当前时间      */      this.getCurrentDate = function () {          return new Date('2015','07','-1');      };        /***      * 获得本周起止时间      */      this.getCurrentWeek = function () {          //起止日期数组            var startStop = new Array();          //获取当前时间            var currentDate = this.getCurrentDate();          //返回date是一周中的某一天            var week = currentDate.getDay();          //返回date是一个月中的某一天            var month = currentDate.getDate();            //一天的毫秒数            var millisecond = 1000 * 60 * 60 * 24;          //减去的天数            var minusDay = week != 0 ? week - 1 : 6;          //alert(minusDay);            //本周 周一            var monday = new Date(currentDate.getTime() - (minusDay * millisecond));          //本周 周日            var sunday = new Date(monday.getTime() + (6 * millisecond));          //添加本周时间            startStop.push(monday); //本周起始时间            //添加本周最后一天时间            startStop.push(sunday); //本周终止时间            //返回            return startStop;      };        /***      * 获得本月的起止时间      */      this.getCurrentMonth = function () {          //起止日期数组            var startStop = new Array();          //获取当前时间            var currentDate = this.getCurrentDate();          //获得当前月份0-11            var currentMonth = currentDate.getMonth();          //获得当前年份4位年            var currentYear = currentDate.getFullYear();          //求出本月第一天            var firstDay = new Date(currentYear, currentMonth, 1);              //当为12月的时候年份需要加1            //月份需要更新为0 也就是下一年的第一个月            if (currentMonth == 11) {              currentYear++;              currentMonth = 0; //就为            } else {              //否则只是月份增加,以便求的下一月的第一天                currentMonth++;          }              //一天的毫秒数            var millisecond = 1000 * 60 * 60 * 24;          //下月的第一天            var nextMonthDayOne = new Date(currentYear, currentMonth, 1);          //求出上月的最后一天            var lastDay = new Date(nextMonthDayOne.getTime() - millisecond);            //添加至数组中返回            startStop.push(firstDay);          startStop.push(lastDay);          //返回            return startStop;      };        /**      * 得到本季度开始的月份      * @param month 需要计算的月份      ***/      this.getQuarterSeasonStartMonth = function (month) {          var quarterMonthStart = 0;          var spring = 0; //春            var summer = 3; //夏            var fall = 6;   //秋            var winter = 9; //冬            //月份从0-11            if (month < 3) {              return spring;          }            if (month < 6) {              return summer;          }            if (month < 9) {              return fall;          }            return winter;      };        /**      * 获得该月的天数      * @param year年份      * @param month月份      * */      this.getMonthDays = function (year, month) {          //本月第一天 1-31            var relativeDate = new Date(year, month, 1);          //获得当前月份0-11            var relativeMonth = relativeDate.getMonth();          //获得当前年份4位年            var relativeYear = relativeDate.getFullYear();            //当为12月的时候年份需要加1            //月份需要更新为0 也就是下一年的第一个月            if (relativeMonth == 11) {              relativeYear++;              relativeMonth = 0;          } else {              //否则只是月份增加,以便求的下一月的第一天                relativeMonth++;          }          //一天的毫秒数            var millisecond = 1000 * 60 * 60 * 24;          //下月的第一天            var nextMonthDayOne = new Date(relativeYear, relativeMonth, 1);          //返回得到上月的最后一天,也就是本月总天数            return new Date(nextMonthDayOne.getTime() - millisecond).getDate();      };        /**      * 获得本季度的起止日期      */      this.getCurrentSeason = function () {          //起止日期数组            var startStop = new Array();          //获取当前时间            var currentDate = this.getCurrentDate();          //获得当前月份0-11            var currentMonth = currentDate.getMonth();          //获得当前年份4位年            var currentYear = currentDate.getFullYear();          //获得本季度开始月份            var quarterSeasonStartMonth = this.getQuarterSeasonStartMonth(currentMonth);          //获得本季度结束月份            var quarterSeasonEndMonth = quarterSeasonStartMonth + 2;            //获得本季度开始的日期            var quarterSeasonStartDate = new Date(currentYear, quarterSeasonStartMonth, 1);          //获得本季度结束的日期            var quarterSeasonEndDate = new Date(currentYear, quarterSeasonEndMonth, this.getMonthDays(currentYear, quarterSeasonEndMonth));          //加入数组返回            startStop.push(quarterSeasonStartDate);          startStop.push(quarterSeasonEndDate);          //返回            return startStop;      };        /***      * 得到本年的起止日期      *       */      this.getCurrentYear = function () {          //起止日期数组            var startStop = new Array();          //获取当前时间            var currentDate = this.getCurrentDate();          //获得当前年份4位年            var currentYear = currentDate.getFullYear();            //本年第一天            var currentYearFirstDate = new Date(currentYear, 0, 1);          //本年最后一天            var currentYearLastDate = new Date(currentYear, 11, 31);          //添加至数组            startStop.push(currentYearFirstDate);          startStop.push(currentYearLastDate);          //返回            return startStop;      };        /**      * 返回上一个月的第一天Date类型      * @param year 年      * @param month 月      **/      this.getPriorMonthFirstDay = function (year, month) {          //年份为0代表,是本年的第一月,所以不能减            if (month == 0) {              month = 11; //月份为上年的最后月份                year--; //年份减1                return new Date(year, month, 1);          }          //否则,只减去月份            month--;          return new Date(year, month, 1); ;      };        /**      * 获得上一月的起止日期      * ***/      this.getPreviousMonth = function () {          //起止日期数组            var startStop = new Array();          //获取当前时间            var currentDate = this.getCurrentDate();          //获得当前月份0-11            var currentMonth = currentDate.getMonth();          //获得当前年份4位年            var currentYear = currentDate.getFullYear();          //获得上一个月的第一天            var priorMonthFirstDay = this.getPriorMonthFirstDay(currentYear, currentMonth);          //获得上一月的最后一天            var priorMonthLastDay = new Date(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth(), this.getMonthDays(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth()));          //添加至数组            startStop.push(priorMonthFirstDay);          startStop.push(priorMonthLastDay);          //返回            return startStop;      };          /**      * 获得上一周的起止日期      * **/      this.getPreviousWeek = function () {          //起止日期数组            var startStop = new Array();          //获取当前时间            var currentDate = this.getCurrentDate();          //返回date是一周中的某一天            var week = currentDate.getDay();          //返回date是一个月中的某一天            var month = currentDate.getDate();          //一天的毫秒数            var millisecond = 1000 * 60 * 60 * 24;          //减去的天数            var minusDay = week != 0 ? week - 1 : 6;          //获得当前周的第一天            var currentWeekDayOne = new Date(currentDate.getTime() - (millisecond * minusDay));          //上周最后一天即本周开始的前一天            var priorWeekLastDay = new Date(currentWeekDayOne.getTime() - millisecond);          //上周的第一天            var priorWeekFirstDay = new Date(priorWeekLastDay.getTime() - (millisecond * 6));            //添加至数组            startStop.push(priorWeekFirstDay);          startStop.push(priorWeekLastDay);            return startStop;      };        /**      * 得到上季度的起始日期      * year 这个年应该是运算后得到的当前本季度的年份      * month 这个应该是运算后得到的当前季度的开始月份      * */      this.getPriorSeasonFirstDay = function (year, month) {          var quarterMonthStart = 0;          var spring = 0; //春            var summer = 3; //夏            var fall = 6;   //秋            var winter = 9; //冬            //月份从0-11            switch (month) {//季度的其实月份                case spring:                  //如果是第一季度则应该到去年的冬季                    year--;                  month = winter;                  break;              case summer:                  month = spring;                  break;              case fall:                  month = summer;                  break;              case winter:                  month = fall;                  break;            };            return new Date(year, month, 1);      };        /**      * 得到上季度的起止日期      * **/      this.getPreviousSeason = function () {          //起止日期数组            var startStop = new Array();          //获取当前时间            var currentDate = this.getCurrentDate();          //获得当前月份0-11            var currentMonth = currentDate.getMonth();          //获得当前年份4位年            var currentYear = currentDate.getFullYear();          //上季度的第一天            var priorSeasonFirstDay = this.getPriorSeasonFirstDay(currentYear, currentMonth);          //上季度的最后一天            var priorSeasonLastDay = new Date(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay.getMonth() + 2, this.getMonthDays(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay.getMonth() + 2));          //添加至数组            startStop.push(priorSeasonFirstDay);          startStop.push(priorSeasonLastDay);          return startStop;      };        /**      * 得到去年的起止日期      * **/      this.getPreviousYear = function () {          //起止日期数组            var startStop = new Array();          //获取当前时间            var currentDate = this.getCurrentDate();          //获得当前年份4位年            var currentYear = currentDate.getFullYear();          currentYear--;          var priorYearFirstDay = new Date(currentYear, 0, 1);          var priorYearLastDay = new Date(currentYear, 11, 1);          //添加至数组            startStop.push(priorYearFirstDay);          startStop.push(priorYearLastDay);          return startStop;      };      return this;        })();    $(function(){        $("#startDate").html( dateRangeUtil.getCurrentWeek() );  })    </script>  </head>  <body>      <div id="startDate"></div>  </body>  </html>  

3、JS获取本周、本季度、本月、上月的开端日期、停止日期

[html]  view plain copy print ? Js代码     /**   * 获取本周、本季度、本月、上月的开端日期、停止日期   */   var now = new Date(); //当前日期   var nowDayOfWeek = now.getDay(); //今天本周的第几天   var nowDay = now.getDate(); //当前日   var nowMonth = now.getMonth(); //当前月   var nowYear = now.getYear(); //当前年   nowYear += (nowYear < 2000) ? 1900 : 0; //    var lastMonthDate = new Date(); //上月日期   lastMonthDate.setDate(1);   lastMonthDate.setMonth(lastMonthDate.getMonth()-1);   var lastYear = lastMonthDate.getYear();   var lastMonth = lastMonthDate.getMonth();    //格局化日期:yyyy-MM-dd   function formatDate(date) {   var myyear = date.getFullYear();   var mymonth = date.getMonth()+1;   var myweekday = date.getDate();    if(mymonth < 10){   mymonth = "0" + mymonth;   }   if(myweekday < 10){   myweekday = "0" + myweekday;   }   return (myyear+"-"+mymonth + "-" + myweekday);   }    //获得某月的天数   function getMonthDays(myMonth){   var monthStartDate = new Date(nowYear, myMonth, 1);   var monthEndDate = new Date(nowYear, myMonth + 1, 1);   var days = (monthEndDate - monthStartDate)/(1000 * 60 * 60 * 24);   return days;   }    //获得本季度的开端月份   function getQuarterStartMonth(){   var quarterStartMonth = 0;   if(nowMonth<3){   quarterStartMonth = 0;   }   if(2<nowMonth && nowMonth<6){   quarterStartMonth = 3;   }   if(5<nowMonth && nowMonth<9){   quarterStartMonth = 6;   }   if(nowMonth>8){   quarterStartMonth = 9;   }   return quarterStartMonth;   }    //获得本周的开端日期   function getWeekStartDate() {   var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);   return formatDate(weekStartDate);   }    //获得本周的停止日期   function getWeekEndDate() {   var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek));   return formatDate(weekEndDate);   }    //获得本月的开端日期   function getMonthStartDate(){   var monthStartDate = new Date(nowYear, nowMonth, 1);   return formatDate(monthStartDate);   }    //获得本月的停止日期   function getMonthEndDate(){   var monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));   return formatDate(monthEndDate);   }    //获得上月开端时候   function getLastMonthStartDate(){   var lastMonthStartDate = new Date(nowYear, lastMonth, 1);   return formatDate(lastMonthStartDate);   }    //获得上月停止时候   function getLastMonthEndDate(){   var lastMonthEndDate = new Date(nowYear, lastMonth, getMonthDays(lastMonth));   return formatDate(lastMonthEndDate);   }    //获得本季度的开端日期   function getQuarterStartDate(){    var quarterStartDate = new Date(nowYear, getQuarterStartMonth(), 1);   return formatDate(quarterStartDate);   }    //或的本季度的停止日期   function getQuarterEndDate(){   var quarterEndMonth = getQuarterStartMonth() + 2;   var quarterStartDate = new Date(nowYear, quarterEndMonth, getMonthDays(quarterEndMonth));   return formatDate(quarterStartDate);   }   

转载于:https://www.cnblogs.com/jym-sunshine/p/5096711.html

最新回复(0)