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;
}
posted on 2022-03-16 15:53 northwest 阅读(5624) 评论(2) 编辑 收藏 举报