我是一個新手石英。Quartz.net cron表達式總是返回月份的最後一天?
我只是試圖找出Quartz.net是否可以,給定一個開始日期(可能在過去),結束日期和間隔計算正確的日期發生 - 它可能不是Quartz的主要用例,但從我可以發現的API中看起來是可能的。
因此,考慮這個片段:
VAR EXP =新CronExpression( 「?0 0 0 1/7 *。*」);
var next = exp.GetNextValidTimeAfter(new DateTime(2012, 1, 1, 12, 30, 00).ToUniversalTime());
while (next < DateTime.Parse("30 Oct 2012"))
{
next = exp.GetNextValidTimeAfter(next.Value);
System.Diagnostics.Debug.WriteLine(next);
}
結果似乎(截斷):
14/01/2012上午11時00分00秒+00:00
21/01/2012上午11時00分00秒+00:00
28/01/2012上午十一時00分00秒+00:00
31/01/2012上午十一時00分00秒+00:00
2012年7月2日上午11點00分○○秒+00:00
14/02/2012上午11點00分○○秒+00:00
21/02/2012 11:00 :00 +00:00
28/02/2012上午11時00分零零秒+00:00
29/02/2012上午11時00分零零秒+00:00
7/03/2012上午十一時00分00秒+00:00
Errr ...看來Quartz的cron表達式總是包含一個月的最後一天,基本上從那裏計算的下一個日期?或者,我對quartz/cron的期望/理解是錯誤的?
而且這些結果似乎使用http://www.cronmaker.com/備份...
謝謝!
欣賞試圖回答這個問題的努力 - 不知道我是否應該現在將其標記作爲答案,因爲實際問題不是我們如何實現正確的結果,而是CRON是按照我們所觀察的方式工作還是按照Quartz的實施方式工作? – 6footunder
對不起,上面的LeftyX,但我最好的答案(最近發現)似乎與CRON的一般行爲緊密相關 - 看起來每個單元都是「盒裝的」,因爲對於給定的單位來說,要求更好的術語。在這種情況下,你不能溢出到下一個單位(幾個月)。一個糟糕的但希望足以解釋我們看到幾個cron測試工具? – 6footunder
@ 6footunder:你試圖做的事情對於一個CRON表達式來說是不可能的(即使在Unix中也是如此)http://superuser.com/questions/110911/how-can-i-create-a-cron-job -that-runs-a-task-every-three-weeks唯一可能的解決方案是創建多個cron表達式或使用上述解決方案。 – LeftyX