1. 程式人生 > >獲取選擇的當前天、周、月、年的時間段

獲取選擇的當前天、周、月、年的時間段

日期格式化 sta ret date fwe 設置 .info || ted

/**
 * Created by Administrator on 2017/5/6.
 */
/**
 * options:{"type":2,"date":"2017-5-6","connect":"-"}
 * type:"1" 獲取當天
 * type:"2" 獲取本周
 * type:"3" 獲取本月
 * type:"4" 獲取本年
 */
function GetDatePeriod(options) {
    this.options={
        date:new Date(),
        type:1,
        connect:"-"
    };
    for(var key in options){
        if(options[key]!=""){
            this.options[key]=options[key];
        }
    }
    var selD=new Date(this.options.date);
    var selDayOfWeek=selD.getDay();
    var selDate=selD.getDate();
    var selMonth=selD.getMonth();
    var selYear=selD.getFullYear();
    var startDate, endDate;
    //補齊數位
    this.digit = function(num) {
        return num < 10 ? "0" + (num | 0) :num;
    };
    //判斷閏年
    this.isLeap = function(y) {
        return (y % 100 !== 0 && y % 4 === 0) || (y % 400 === 0);
    };
    //獲取本月天數
    this.getDaysNum = function(y, m) {
        var num = 31;
        switch (parseInt(m)) {
            case 2:
                num = this.isLeap(y) ? 29 : 28; break;
            case 4: case 6: case 9: case 11:
            num = 30; break;
        }
        return num;
    };
    //日期格式化
    this.dateFormat=function(dateSrc){
        var connect=this.options.connect;
        return dateSrc.getFullYear()+connect+this.digit(dateSrc.getMonth()+1)+connect+this.digit(dateSrc.getDate())
    };
    //1:本日,2:本周,3:本月,4:本年
    switch (this.options.type) {
        case "1":
            startDate = new Date(selYear, selMonth, selDate);
            endDate = new Date(selYear, selMonth, selDate);
            break;
        case "2":
            if (selDayOfWeek > 0) {
                startDate = new Date(selYear, selMonth, selDate - selDayOfWeek + 1);
                endDate = new Date(selYear, selMonth, selDate + (7 - selDayOfWeek));
            } else {
                startDate = new Date(selYear, selMonth, selDate - selDayOfWeek - 6);
                endDate = new Date(selYear, selMonth, selDate);
            }
            break;
        case "3":
            startDate = new Date(selYear, selMonth, 1);
            endDate = new Date(selYear, selMonth,this.getDaysNum(selYear,selMonth+1));
            break;
        case "4":
            startDate = new Date(selYear, 0, 1);
            endDate = new Date(selYear, 11, 31);
            break;
    }
    this.periodOutput=function(){
        //返回本周,月,年的起止時間
        startDate=this.dateFormat(startDate);endDate=this.dateFormat(endDate);
        //如果選擇的時間大於當前時間則把endDate設置為當前時間
        var curDate=this.dateFormat(new Date());
        endDate=new Date(endDate).getTime()>new Date(curDate).getTime()?curDate:endDate;
        return {
            startDate:startDate,
            endDate:endDate
        }
    }
};
console.info("當前周時間段",new GetDatePeriod({type:"2",date:"2017-05-06",‘connect‘:‘/‘}).periodOutput());

  

獲取選擇的當前天、周、月、年的時間段