1. 程式人生 > >JS獲取-某一天是某個時間段內的 第幾周,星期幾

JS獲取-某一天是某個時間段內的 第幾周,星期幾


    最近做課程表,要將所有課程顯示到一個課程格子裡,預設載入本週課程,於是就需要知道本週是這個學期的第幾周,引出本文主要內容:


    首先,這個學期的開始時間是要知道的,然後根據學期的開始時間計算本週是第幾周,今天是星期幾。


    

function(){  
    /* 
     * 說明: 
     * 本程式碼將週一作為每週的開始 
     */  
  
    function TodayInfo(start) {  
        var WEEKLEN = 7, // 一週7天
            WEEKDAYS = ["日", "一", "二", "三", "四", "五", "六"],  
            weekInfo = {"week": null, "day": null}, // 初始化返回資訊,預設第null周,星期null  
            oneDay = 24 * 60 * 60 * 1000, // 一天的毫秒時長  
            weekLeave, // 開學當天所在周剩餘天數  
            weekStart, // 開學當天start是星期幾  
            today, // 今天  
            dateDiff, // 今天與開學當天日期差  
            sDate; //開學之日,日期物件  
        var rDateStr = /\d{4}[\/-]\d{1,2}[\/-]\d{1,2}/g; // 簡單的日期格式校驗:2013/12/19  
        if (!rDateStr.test(start)) {  
            alert("請使用合法的開學日期!!!");  
            return weekInfo;  
        }  
        sDate = new Date(start.replace("-", "/"));  
        weekStart = sDate.getDay();  
        weekStart = weekStart === 0 ? 7 : weekStart; // JS中週日的索引為0,這裡轉換為7,方便計算  
          
        weekLeave = WEEKLEN - weekStart;  
        today = new Date();  
        weekInfo.day = WEEKDAYS[today.getDay()];  
        today = new Date(today.getFullYear() + "/" + (today.getMonth() + 1) + "/" + today.getDate());  
        dateDiff = today - sDate;  
        if (dateDiff < 0) {  
            alert("未開學呢 !!!");  
            return weekInfo;  
        }  
        dateDiff = parseInt(dateDiff / oneDay);  
        weekInfo.week = Math.ceil((dateDiff - weekLeave) / WEEKLEN) + 1;  
        return weekInfo;  
    }  

    // 測試結果  
    var td = TodayInfo("2013/12/16");  
    console.log("今天是自2013/12/16日,開學以來的第 " + td.week + " 周,今天星期" + td.day);  
    td = TodayInfo("2013/11/11");  
    console.log("今天是自2013/11/11日,開學以來的第 " + td.week + " 周,今天星期" + td.day);  
    td = TodayInfo("2013/09/01");  
    console.log("今天是自2013/09/01日,開學以來的第 " + td.week + " 周,今天星期" + td.day);  
    td = TodayInfo("2013/12/29");  
    console.log("今天是自2013/12/29日,開學以來的第 " + td.week + " 周,今天星期" + td.day);  
})();  

    有了這個函式,就可以輕鬆的計算出第幾周和星期幾了!