JS獲取-某一天是某個時間段內的 第幾周,星期幾
阿新 • • 發佈:2018-11-22
最近做課程表,要將所有課程顯示到一個課程格子裡,預設載入本週課程,於是就需要知道本週是這個學期的第幾周,引出本文主要內容:
首先,這個學期的開始時間是要知道的,然後根據學期的開始時間計算本週是第幾周,今天是星期幾。
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); })();
有了這個函式,就可以輕鬆的計算出第幾周和星期幾了!