javascript : 獲取當前周、上一週、下一週的時間範圍,返回星期一和星期五的具體日期
阿新 • • 發佈:2022-03-16
需求
初始化時顯示當前周的【星期一和星期天】的日期,格式:03.14-03.20;
點一下左邊的按鈕,顯示上一週【星期一和星期天】的日期;
點一下右邊的按鈕,顯示下一週【星期一和星期天】的日期。
實現
程式碼:
getWeek : function(date) { var one_day = 86400000; var day = date.getDay(); // 設定時間為當天的0點 date.setHours(0); date.setMinutes(0); date.setSeconds(0); date.setMilliseconds(0); var week_start_time = date.getTime() - (day - 1) * one_day; var week_end_time = date.getTime() + (7 - day) * one_day; var last = week_start_time - 2*24*60*60*1000; var next = week_end_time + 24*60*60*1000; var month1 = new Date(week_start_time).getMonth()+1; var month2 = new Date(week_end_time).getMonth()+1; var day1 = new Date(week_start_time).getDate(); var day2 = new Date(week_end_time).getDate(); if(month1<10){ month1 = "0"+month1; } if(month2<10){ month2 = "0"+month2; } if(day1<10){ day1 = "0"+day1; } if(day2<10){ day2 = "0" + day2; } var time1 = month1+"."+day1; var time2 = month2+"."+day2; var map = new Map(); map["stime"] = week_start_time; // 當前週週一零點的毫秒數 map["etime"] = week_end_time; // 當前週週日零點的毫秒數 map["stext"] = time1; // 當前周 週一的日期 mm.dd 如 03.14 map["etext"] = time2; // 當前周 週日的日期 mm.dd 如 03.20 map["last"] = last; // 上一週 週六零點的毫秒數 map["next"] = next; // 下一週 週一零點的毫秒數 map["text"] = time1+"-"+time2; return map; }
用法:
任意傳入一個date日期,這個方法會返回一個map,包含了如上面註釋的引數。
1.首先寫一個全域性變數weekMap,作為一個map儲存相關的時間資料。
2.再寫一個全域性變數weekText,作為一個儲存需要顯示的諸如[03.24-03.20]的字串資料。
3.獲取當前周:
weekMap = getWeek(new Date())
weekText = weekMap["text"]
4.獲取上一週:
// 先獲取上次的weekMap中儲存的last值 也就是上一週的週六的毫秒數
var time = weekMap["last"]
// new 一個週六的毫秒數的 date 傳入方法 獲取上一週的資料
weekMap = getWeek(new Date(time))
weekText = weekMap["text"]
5.獲取下一週:
跟第4點一樣,把var time = weekMap["last"] 換成weekMap["next"]就行了,通過下週一的日期去獲取下一週的資料。
感謝
這裡的方法是在js獲取當前周的時間範圍的基礎上根據需求做了一點改編和適配的。
附送
再附送一個獲取yyyy-mm-dd hh:mm:ss 格式時間的方法,傳入一個date就可以。
composeFullTime : function() { var date = new Date(); var year = date.getFullYear(); var month = (date.getMonth() + 1) < 10 ? "0" + (date.getMonth() + 1) : (date.getMonth() + 1); var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate(); var hour = date.getHours() < 10 ? "0" + date.getHours() : date.getHours(); var min = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(); var sec = date.getSeconds(); return year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec; }