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();
}
* 每个月执行一次
* 参数说明:
* 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();
}
相关文章推荐
- JSON for java入门总结
- 两个服务器之间文件传递(JAVA)
- Java使用设计模式中迭代器模式构建项目的代码结构示例
- Java中 pubic 、 protected 、 default 、 private 的作用范围及区别
- Eclipse 导入Xutils3.0
- Java遗忘笔记(1)
- Try、catch和finally
- spring mvc 项目配置
- AAR文件转JAR文件的方法
- 将ISO8859-1字符串转成GB2312编码
- (转载)JAVA动态编译--字节代码的操纵
- javaweb 之sqlserver连接
- Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
- Spring--注入类型--setter
- 在JAVA中 迭代器Iterator的具体含义和用法!
- Spring中 @Autowired注解与@Resource注解的区别
- 20160502-struts2入门--ognl表达式
- 接口
- C# 和Java区别
- eclipse中使用maven插件-Dmaven.multiModuleProjectDirectory system propery is not set.