前言
做记录用:有借鉴他人代码
获取指定周的第一天 及 指定周的 最后一天
public class WeekYearNum {
//region 获取指定周的第一天 及 指定周的 最后一天
/**
* 获取指定周的第一天
*
* @param year
* @param week
* @return
*/
public static String getFirstDayOfWeek(int year, int week) {
if (week > 1) {
Calendar cal = Calendar.getInstance();
// 设置年份
cal.set(Calendar.YEAR, year);
// 设置周
cal.set(Calendar.WEEK_OF_YEAR, week);
// 设置该周第一天为星期一
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cal.setMinimalDaysInFirstWeek(0);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
return simpleDateFormat.format(cal.getTime());
} else {
Calendar cal = Calendar.getInstance();
cal.set(year, 0, 1);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
return simpleDateFormat.format(cal.getTime());
}
}
/**
* 获取指定周的最后一天
*
* @param year
* @param week
* @return
*/
public static String getLastDayOfWeek(int year, int week) {
if (week * 7 >= 365) { // 说明是年的最后一天
Calendar cal = Calendar.getInstance();
cal.set(year, 11, 31);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
return simpleDateFormat.format(cal.getTime());
} else {
Calendar cal = Calendar.getInstance();
// 设置年份
cal.set(Calendar.YEAR, year);
// 设置周
cal.set(Calendar.WEEK_OF_YEAR, week);
// 设置该周第一天为星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 设置最后一天是星期日
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6); // Sunday
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
return simpleDateFormat.format(cal.getTime());
}
}
//endregion
public static void main(String[] args) {
Integer year = 2024;
for (int i = 1; i <= 53; i++) {
System.out.println(i + ":" + getFirstDayOfWeek(year, i) + "+++" + getLastDayOfWeek(year, i));
}
}
}