Java Timer不会在午夜后启动

时间:2016-11-29 23:16:11

标签: java timer scheduled-tasks

在我的代码中,我试图写一个应该每24小时触发一次的任务。第一个触发器应该是在计划定时器时,然后每天早上7点。我正在使用

java.util.TimerTask  

我写了这样的话:

Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 7);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
timer.schedule(task1, today.getTime(), TimeUnit.MILLISECONDS.convert(24, TimeUnit.HOURS));

每次运行我的应用程序时都会启动任务(如预期的那样?)...但午夜后如果我运行我的应用程序,则不会触发任务。

错误在哪里?

感谢

1 个答案:

答案 0 :(得分:0)

您提供当天(不是第二天)的07:00:00firstTime

因此,如果时间是早上7点之后,您的firstTime就在过去。可能这就是为什么任务立即开始的原因。

如果时间是"在午夜之后"可能在早上7点之前,firstTime将来。所以你必须等到早上7点开始任务。