使用java获取本周、下周、本月的第一个和最后一天
Util
/**
* 获取本周的第一天
* @return String
**/
public static Date getWeekStart() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.WEEK_OF_MONTH, 0);
cal.set(Calendar.DAY_OF_WEEK, 2);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date time = cal.getTime();
// return new SimpleDateFormat("yyyy-MM-dd").format(time) + " 00:00:00";
return time;
}
/**
* 获取本周的最后一天
* @return String
**/
public static Date getWeekEnd() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_WEEK, cal.getActualMaximum(Calendar.DAY_OF_WEEK));
cal.add(Calendar.DAY_OF_WEEK, 1);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 59);
Date time = cal.getTime();
// return new SimpleDateFormat("yyyy-MM-dd").format(time) + " 23:59:59";
return time;
}
/**
* 获取本月第一天
* @return String
**/
public static Date getMonthStart() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date time = cal.getTime();
// return new SimpleDateFormat("yyyy-MM-dd").format(time) + " 00:00:00";
return time;
}
/**
* 获取本月最后一天
* @return String
**/
public static Date getMonthEnd() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 59);
Date time = cal.getTime();
// return new SimpleDateFormat("yyyy-MM-dd").format(time) + " 23:59:59";
return time;
}
/**
* 获取下周最后一天(ISO标准周日23:59:59.999)
* 算法:下周一的00:00:00.000减1毫秒
*/
public static Date getNextWeekEnd() {
Calendar cal = Calendar.getInstance();
// 强制设置周起始日为周一,确保周数计算统一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 增加1周(确保跳到下一周)
cal.add(Calendar.WEEK_OF_YEAR, 2);
// 设置到该周的周一00:00:00
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
setMinTime(cal);
// 回退1毫秒得到周日的最后一刻
cal.add(Calendar.MILLISECOND, -1);
return cal.getTime();
}
/**
* 获取下周第一天(ISO标准周一00:00:00.000)
*/
public static Date getNextWeekStart() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
setMinTime(cal);
return cal.getTime();
}
/**
* 设置时间到当日最小(线程安全)
*/
private static void setMinTime(Calendar cal) {
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
}
/**
* 设置时间到当日最大(线程安全)
*/
private static void setMaxTime(Calendar cal) {
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
}

浙公网安备 33010602011771号