Java日历类Calendar中,默认周日为本周第一天。 所以网上的文章大多直接获取本周的第二天 Calendar.MONDAY
来当做本周第一天.但会导致严重的问题:当在本周日请求该方法时,实际得到的是下周一的日期。
错误实例:
// TODO BUG 当在本周日请求该方法时,得到的是下周一的日期
public static Date currentWeekMonday() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return cal.getTime();
}
正确实例:
public static Date currentWeekMondayDebug() {
Calendar cal = Calendar.getInstance();
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
if (Calendar.SUNDAY == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);//星期天向前减一天即得到上一周
}
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
return cal.getTime();
}