zoukankan      html  css  js  c++  java
  • JS获取本周、本月、本季度、本年

     -------------------------------------------------------------------------------------------------------------------------------

    dateRangUtil.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.format("yyyy-MM-dd")); //本周起始时间  
            //添加本周最后一天时间  
            startStop.push(sunday.format("yyyy-MM-dd")); //本周终止时间  
            //返回  
            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.format("yyyy-MM-dd"));
            startStop.push(lastDay.format("yyyy-MM-dd"));
            //返回  
            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.format("yyyy-MM-dd"));
            startStop.push(quarterSeasonEndDate.format("yyyy-MM-dd"));
            //返回  
            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.format("yyyy-MM-dd"));
            startStop.push(currentYearLastDate.format("yyyy-MM-dd"));
            //返回  
            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.format("yyyy-MM-dd"));
            startStop.push(priorMonthLastDay.format("yyyy-MM-dd"));
            //返回  
            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.format("yyyy-MM-dd"));
            startStop.push(priorWeekLastDay.format("yyyy-MM-dd"));
    
            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.format("yyyy-MM-dd"));
            startStop.push(priorSeasonLastDay.format("yyyy-MM-dd"));
            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.format("yyyy-MM-dd"));
            startStop.push(priorYearLastDay.format("yyyy-MM-dd"));
            return startStop;
        };
    
        return this;
    })();
    
    Date.prototype.format = function(fmt) {
        var o = {
            "M+" : this.getMonth()+1, //月份
            "d+" : this.getDate(), //日
            "h+" : this.getHours(), //小时
            "m+" : this.getMinutes(), //分
            "s+" : this.getSeconds(), //秒
            "q+" : Math.floor((this.getMonth()+3)/3), //季度
            "S" : this.getMilliseconds() //毫秒
        };
        if(/(y+)/.test(fmt)) {
            fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
        }
        for(var k in o) {
            if(new RegExp("("+ k +")").test(fmt)){
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
            }
        }
        return fmt;
    }
    

    调用方法:

    // 周
    if(self.time == 1){
        self.startTime =  dateRangeUtil.getCurrentWeek()[0];
        self.endTime = dateRangeUtil.getCurrentWeek()[1]; 
    }
    // 月
    if(self.time == 2){
        self.startTime = dateRangeUtil.getCurrentMonth()[0];
        self.endTime = dateRangeUtil.getCurrentMonth()[1];
    }
    // 季度
    if(self.time == 3){
         self.startTime = dateRangeUtil.getCurrentSeason()[0];
         self.endTime = dateRangeUtil.getCurrentSeason()[1];
    }
    // 年
    if(self.time == 4){
          self.startTime = dateRangeUtil.getCurrentYear()[0];
          self.endTime = dateRangeUtil.getCurrentYear()[1];
    }
    console.log('startTime:'+self.startTime)
    console.log('endTime:'+self.endTime)
    

      

  • 相关阅读:
    题解 P5320
    Codeforces 1500F
    三个 AGC D(AGC037D、AGC043D、AGC050D)
    Atcoder Regular Contst 084 D
    DG-基础知识点整理
    MySQL-数据恢复场景实验
    MySQL-查看Galera集群状态
    MySQL-运行日志切割
    MySQL-生产环境删除大表或大量binlog策略
    MySQL-基于(MySQL 5.7)NDB中启用共享权限表
  • 原文地址:https://www.cnblogs.com/liubingyjui/p/12607770.html
Copyright © 2011-2022 走看看