获取当前时间的本周的周一至周日的开始与结束时间戳
public List<Week> getWeekTime(){
//本周开始与结束时间 的时间戳数组
List<Week> week = new ArrayList<>();
//一天开始与结束时间毫秒差
long millisecond = 86399999l;
Calendar cal = Calendar.getInstance();
// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 获得当前日期是一个星期的第几天
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if(dayWeek==1){
dayWeek = 8;
}
// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - dayWeek);
//设置日历时间为周一
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
//设置开始毫秒数为0
cal.set((Calendar.MILLISECOND),0);
Date mondayDate = cal.getTime();
//周一的开始时间与结束时间数组
Week sunDay = new Week();
sunDay.setStartTime(cal.getTime().getTime());
sunDay.setEndTime(cal.getTime().getTime()+millisecond);
week.add(sunDay);
cal.add(Calendar.DATE, 4 +cal.getFirstDayOfWeek());
Date sundayDate = cal.getTime();
Calendar calBegin = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calBegin.setTime(mondayDate);
//测试此日期是否在指定日期之后
while (sundayDate.after(calBegin.getTime())) {
// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
calBegin.add(Calendar.DAY_OF_MONTH, 1);
//每天的开始时间与结束时间存储的数组
Week day = new Week ();
day.setStartTime(calBegin.getTime().getTime());
day.setEndTime(calBegin.getTime().getTime()+millisecond);
week.add(day);
}
return week;
}
Week类
public class Week {
@JsonSerialize(using = ToStringSerializer.class) //防止存取值时因long长度原因精度丢失
private Long startTime;
@JsonSerialize(using = ToStringSerializer.class)
private Long endTime;
public Long getStartTime() {
return startTime;
}
public void setStartTime(Long startTime) {
this.startTime = startTime;
}
public Long getEndTime() {
return endTime;
}
public void setEndTime(Long endTime) {
this.endTime = endTime;
}
}