先上正确的写法:
public static int getWeekStart() {
int num;
Calendar calendar = Calendar.getInstance();
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
// 如果是周日,特殊处理
if (dayOfWeek == 1) {
num = -6;
} else {
num = 2 - dayOfWeek;
}
calendar.add(Calendar.DATE, num);
Date monday = calendar.getTime();
return Integer.parseInt(new SimpleDateFormat(YYYYMMDD_STR).format(monday));
}
网上错误的写法:这种写法到每周日的时候会出问题,因为 Calendar 是从每周日开始的,获取的周一日期和我们要求意义上的周一不一样。
public static int getWeekStart() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
Date time = cal.getTime();
return Integer.parseInt(new SimpleDateFormat(YYYYMMDD_STR).format(time));
}