elC*_*ano 2 java datetime calendar date
为了运行后台服务,我想在每天凌晨1点开始运行一个线程.我怎样才能在java中获得这个日期?
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, HOUR_OF_EXECUTION);
Date date = cal.getTime();
Run Code Online (Sandbox Code Playgroud)
不工作.
你应该去Quartz.
要么
Timer timer = new Timer();
final Callable c = callable;
TimerTask task = new TimerTask() {
public void run() {
c.call();
}
}
t.scheduleAtFixedRate(task, firstExecuteDate, 86400000); // every day
Run Code Online (Sandbox Code Playgroud)
相应地给出firstExecuteDate并且你的事情已经完成了,现在更多地进行下一次执行
下午1点的下一个日期.
Calendar cal = Calendar.getInstance();
Calendar calAtOne = Calendar.getInstance();
calAtOne.set(Calendar.HOUR_OF_DAY,13);
calAtOne.set(Calendar.MINUTE,00);
calAtOne.set(Calendar.SECOND,00);
if(calAtOne.after(cal)){
return calAtOne;
}else{
cal.add(Calendar.DATE,1);
cal.set(Calendar.HOUR_OF_DAY,13);
cal.set(Calendar.MINUTE,00);
cal.set(Calendar.SECOND,00);
return cal;
}
Run Code Online (Sandbox Code Playgroud)
然后减去 currentMillis - (nextExecDate returned By above code)