首页 > 网站 > WEB开发 > 正文

JS 获取 本周、本月、本季度、本年、上月、上周、上季度、去年

2024-04-27 14:23:00
字体:
来源:转载
供稿:网友

JS 获取 本周、本月、本季度、本年、上月、上周、上季度、去年

工具类定义:

/*** 日期范围工具类*/var dateRangeUtil = (function () {    /***    * 获得当前时间    */    this.getCurrentDate = function () {        return new Date();    };    /***    * 获得本周起止时间    */    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;        };
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表