2016-11-29 102 views
0

在我的代碼中,我試圖編寫一個應該每24小時觸發一次的任務。第一個觸發應該是計時器計劃時間,然後是每天早上7點。我米使用Java定時器在午夜之後不會啓動

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

碰巧啓動任務每次運行我的應用程序的時間......但午夜過後,如果我運行(如預期?)我的應用程序不會觸發任務。

錯誤在哪裏?

感謝

+0

「但在午夜之後」你是什麼意思,到底是什麼?所有時間都是在午夜之後。 –

+0

'timer'是什麼類型? (我檢查了它是否是'ScheduledExecutorService',但沒有任何符合該簽名的東西)。 –

+0

java.util.TimerTask ...我的意思是我試圖在00.01運行我的應用程序...並且任務未執行。每晚都有相同的行爲 – Alex

回答

0

您所提供的當前日期(不次日)爲firstTime07:00:00

因此,如果時間早上7點,您的firstTime已過去。可能這就是爲什麼該任務立即開始。

如果時間是午夜之後,大概在早上7點之前,firstTime是未來。所以你必須等上午7點才能開始任務。

+0

我現在將時間觸發時間更改爲0 ...,任務開始。所以你的似乎是正確的答案。 – Alex