如果对你有帮助记得素质三连~
转载请注明出处~
欢迎批评指点~
https://blog.csdn.net/L_Open2021/article/details/127327416
需求
之前是以周一为每周起始天,后面需求要改成以周五为每周起始天。
网上没找到好用的方案只能自己写了。
下面直接贴代码
/**
* @Description: 获取当前周第一天(周一)
* @param date 当前时间
* @param modifyValue 预设值 设定周几为第一天,1-7为周一到周日
* @Author: wsp
**/
public static Date getWeekStart(Date date, Integer modifyValue) {
//判断为空 或者 不在[1,7]区间。。默认为1
if (modifyValue == null || (modifyValue<1 || modifyValue > 7)) modifyValue = 1;
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//如果以周日为默认,则直接用国际日历,当前时间的第一天即可
if (modifyValue == 7) {
calendar.set(Calendar.DAY_OF_WEEK, 1);
return calendar.getTime();
}
// 获取当前为周几(国际日历周日为1,改为周一为1)
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek > 1 && dayOfWeek <= 7) {
dayOfWeek = dayOfWeek - 1;
} else if (dayOfWeek == 1) {
dayOfWeek = 7;
}
/**
* 如果当前日期大于等于设定日期 , 并且当前时间不是周日
* 则: 直接从本周取设定日期的那一天
* 否则:取上一周的设定日期的那一天
*/
if (dayOfWeek >= modifyValue && dayOfWeek != 7) {
//直接从本周取设定日期的那一天
calendar.set(Calendar.DAY_OF_WEEK, modifyValue + 1);
return calendar.getTime();
} else {
//获取上一周的某个时间,当前时间-7即可,
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date);
calendar2.add(Calendar.DAY_OF_MONTH, -7);
Date date1 = calendar2.getTime();
Calendar calendar3 = Calendar.getInstance();
calendar3.setTime(date1);
//上一周的设定日期
calendar3.set(Calendar.DAY_OF_WEEK, modifyValue + 1);
return calendar3.getTime();
}
}
/**
* @Description: 获取当前周最后一天(周日)
* @param date 当前时间
* @param modifyValue 浮动值,默认周一为一周开始
* @Author: wsp
**/
public static Date getWeekEnd(Date date, Integer modifyValue) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(getWeekStart(date, modifyValue));
calendar.add(Calendar.DAY_OF_MONTH, 6);
return calendar.getTime();
}