2016-12-28 70 views
1

我知道crontab表達式沒有「年」表達式。但是我想知道,如果有一種解決方法或某種可以使Hangfire在特定年份啓動/停止計劃的方法。如果有開始日期和結束日期,Hangfire如何編寫crontab?

例如,假設一個案例:

  • 假定當前日期是2016年9月15日

  • 計劃開始於2016年,12月,由上午8:30每小時1次

  • 重複直到下午5點30分(辦公時間)

  • 星期一 - 星期五發生在工作日

  • 結束於2018,Februrary,1

從,它可能需要在某些情況下超過1級的crontab表達的其它交解讀。但對於這個,我不知道如何寫。原因:

如果我寫:

  • 「30 8 112 0-4」:它僅規定12月1日
  • 「30 * 8 * 0-4」:它不知道哪些月開始或結束

如何編寫此crontab?

+0

張貼在此之後,我想也許開始日期可以通過使用「延遲任務」與指定的日期可能處理。在延遲任務中,引入循環任務... 同時,結束日期(年度信息)存儲在另一列中,每當任務運行時,檢索年份以查看它是否仍在當前年份之內信息...如果沒有,請刪除作業... – zeroflaw

回答

2

不確定一個乾淨的方式。但它可能在這個方式之 晚五的工作來處理:

2延遲喬布斯就開始日期和結束日期運行(StartDateDelayedJob,EndDateDelayedJob)

3重複的作業 -

  1. 1:用cron表達式(* */1 * * 1-5)從星期一到星期五每小時運行一次預期任務,
  2. 第二個用cron表達式(30 8 * * 1-5)每天添加第一個重複任務8 30如果是星期一至星期五,
  3. 如果是星期一至星期五,則以(30 17 * * 1-5)的cron表達式以每天5 30除去第一個重複作業。

StartDateDelayedJob將添加第2次重複作業和第3次重複作業。

EndDateDelayedJob將刪除兩個重複作業。

希望這有助於

+0

感謝您的回答。我在想,也許這可以提高到只有3個工作? 首先:一個延遲作業在開始日期運行。第二:來自(1)的作業是運行表達式(30 8-17 * * 1-5)的循環作業。 第三:一個延遲作業在結束日期上運行。這項工作是從(2) – zeroflaw

+0

中刪除重複的工作你是否改變只有5個工作?我會接受這個答案。 (如果你同意我的觀點) – zeroflaw

+0

上面的答案已經有五份工作。你能解釋一下你希望我改變或同意嗎?在此先感謝 –

相關問題