您的位置:首页 > 编程语言 > Java开发

JAVA定时器启动日期

2016-05-03 09:40 519 查看
/**

* 每个月执行一次

* 参数说明:

* 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();

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: