/**
* 每个月执行一次
* 参数说明:
* day:一个月中的哪一天,默认为当前天
* hour:几点钟
* minute:分钟
* second:秒 默认为00:00:00
*/
public static Date getTargetDate(int day, int hour, int minute, int second) {
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
if (day != 0) {
calendar.set(Calendar.DAY_OF_MONTH, day); // 设置哪一天
}
calendar.set(Calendar.HOUR_OF_DAY, hour);// 设置几点
calendar.set(Calendar.MINUTE, minute);// 设置多少分
calendar.set(Calendar.SECOND, second);// 设置多少秒
if (calendar.getTime().getTime() < date.getTime()) {
// 如果设置day 则认为是每个月执行,否则为每天执行
if (day != 0) {
// 获取下个月的规定时间
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + 1);
} else {
// 获取第二天的规定时间
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + 1);
}
}
//System.out.println("下次任务开始时间:" + sf.format(calendar.getTime()));
return calendar.getTime();
}
/**
* 每一天执行
* @param hour
* @param minute
* @param second
* @return
*/
public static Date getDay(int hour, int minute, int second) {
// 当前时间
Date now = new Date();
// 定制每日执行方法
Calendar cal = Calendar.getInstance();
cal.setTime(now);
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, second);
// 如果第一次执行定时任务的时间 小于 当前的时间
Date date = cal.getTime();
if (date.before(now)) {
date = addDay(date, 1);
}
return date;
}
/**
* 增加或减少天数
* @param date
* @param num
* @return
*/
private static Date addDay(Date date, int num) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, num);
return cal.getTime();
}
JAVA定时器启动日期
最新推荐文章于 2022-10-03 16:09:55 发布