獲取某個時間開始 以後的 N次[周幾,周幾]

廢話很少說,直接上菜!

調用函數代碼舉例數組

//PS :這裏須要注意的是 週日 是 0 !!!!!

                        console.log(getBeforeDate(-10000)) //一萬天以後的日期
            console.log(getWeek('2019-07-03',[2,3],20))//從'2019-07-03' 開始獲取以後 20 個 周2、週三的日期

JS代碼函數

/**
 * 獲取某個時間開始 以後的 N次[周幾,周幾]
 * @param {Object} begin 開始時間
 * @param {Object} week_arr 須要獲取的周幾數組
 * @param {Object} Max 須要獲取數組最大長度
 */
 function getWeek (begin, week_arr,Max){
     var dateArr = new Array();
     var stimeArr = begin.split("-");//=>["2018", "01", "01"]
     var etimeArr = getBeforeDate(-10000).split("-");//=>["2018", "01", "30"] 這裏我給了一個10000天后的一塊兒可更具需求更改
  
     var stoday = new Date();
     stoday.setUTCFullYear(stimeArr[0], stimeArr[1]-1, stimeArr[2]);
     var etoday = new Date();
     etoday.setUTCFullYear(etimeArr[0], etimeArr[1]-1, etimeArr[2]);
  
     var unixDb = stoday.getTime();//開始時間的毫秒數
     var unixDe = etoday.getTime();//結束時間的毫秒數
  
     for (var k = unixDb; k <= unixDe;) {
        //達到最大次數時,結束循環
        if(dateArr.length==Max){
            break;
        }else{
            let needJudgeDate = msToDate(parseInt(k)).withoutTime;
            //不加這個if判斷直接push的話就是已知時間段內的全部日期
            
            $.each(week_arr, function(i,o) {
                if (new Date(needJudgeDate).getDay() === o) {
                    dateArr.push(needJudgeDate);
                }
            })
             k = k + 24*60*60*1000;
        }
        
     }
     return dateArr;
 }
  
//根據毫秒數獲取日期
function msToDate (msec) {
    let datetime = new Date(msec);
    let year = datetime.getFullYear();
    let month = datetime.getMonth();
    let date = datetime.getDate();
    let hour = datetime.getHours();
    let minute = datetime.getMinutes();
    let second = datetime.getSeconds();
  
    let result1 = year +
                 '-' +
                 ((month + 1) >= 10 ? (month + 1) : '0' + (month + 1)) +
                 '-' +
                 ((date + 1) < 10 ? '0' + date : date) +
                 ' ' +
                 ((hour + 1) < 10 ? '0' + hour : hour) +
                 ':' +
                 ((minute + 1) < 10 ? '0' + minute : minute) +
                 ':' +
                 ((second + 1) < 10 ? '0' + second : second);
  
    let result2 = year +
                 '-' +
                 ((month + 1) >= 10 ? (month + 1) : '0' + (month + 1)) +
                 '-' +
                 ((date + 1) < 11 ? '0' + date : date);
  
    let result = {
        hasTime: result1,
        withoutTime: result2
    };
  
    return result;
}




//-----[獲取前n天的日期]
function getBeforeDate(n) {
    var n = n;
    var d = new Date();
    var year = d.getFullYear();
    var mon = d.getMonth() + 1;
    var day = d.getDate();
    if(day <= n) {
        if(mon > 1) {
            mon = mon - 1;
        } else {
            year = year - 1;
            mon = 12;
        }
    }
    d.setDate(d.getDate() - n);
    year = d.getFullYear();
    mon = d.getMonth() + 1;
    day = d.getDate();
    s = year + "-" + (mon < 10 ? ('0' + mon) : mon) + "-" + (day < 10 ? ('0' + day) : day);
    return s;
}
//-----[獲取前n天的日期END]
相關文章
相關標籤/搜索