javascript : 獲取當前周、上一周、下一周的時間范圍,返回星期一和星期五的具體日期


需求

初始化時顯示當前周的【星期一和星期天】的日期,格式: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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM