下次凌晨1点获取日期

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)

不工作.

Jig*_*shi 5

你应该去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)