2017-07-16 92 views
1

我想安排一個在午夜每天運行的任務。我跟着從春official guide和下面進行調度類:春季日程安排 - 每天午夜不工作的Cron表達式?

@Component 
    public class OverduePaymentScheduler {  

     @Scheduled(cron = "0 0 0 * * *") 
     public void trackOverduePayments() { 

       System.out.println("Scheduled task running"); 

     } 
    } 

但是當鍾打上午12點的任務不會運行。我從這個link的石英調度程序的文檔中獲得了cron表達式。

如果我將cron表達式更改爲每10秒運行一次的「*/10 * * * * *」,則調度程序執行得很好。

那麼我做錯了什麼?

回答

0

我終於得到它與這個cron表達式0 0 0 * * *,但我必須像這樣在調度程序類中設置時區。 @Scheduled(cron = "0 0 0 * * *",zone = "Indian/Maldives")

3

請使用以下的cron模式爲每天12:00 AM:

// at 12:00 AM every day 
    @Scheduled(cron="0 0 0 * * ?") 

我已經檢查在這個網站你的cron模式:http://www.cronmaker.com/

它說模式0 0 0 * * *爲無效。

+0

我試過這個,但它不工作。我欣賞幫助。 –

+0

我在我的項目中使用了這個cron模式。它工作得很好......我現在也通過改變我的系統時鐘時間到11:59 PM進行測試,並且在上午12:00自動觸發調度器。 –

5

這些是cron的表達式有效格式:

  • 0 0 * * * * =每一天的每一個小時的頂部。
  • */10 * * * * * =每十秒鐘一次。
  • 0 0 8-10 * * * =每天8點,9點和10點。
  • 0 0 6,19 * * * =每天上午6:00和晚上7:00。
  • 0 0/30 8-10 * * * =上午8點,8點,9點,9點30分,10點和10點30分,每 天。
  • 0 0 9-17 * * MON-FRI =上一小時的朝九晚五工作日
  • 0 0 0 25 12 ? =每一個聖誕節午夜

的模式是:

second, minute, hour, day, month, weekday 

所以你的答案是:

0 0 12 * * * 
+1

我恐怕表達式是每天下午12點 –

+1

對不起。 ...我以爲你想在12日(當天中午)...你必須用24而不是12 ... –