私は、クォーツCronTrigger機能を使用して、特定のジョブがいつ実行されるべきかを判断するためにcronスケジュールフォーマット文字列を解析しています。私は実際に仕事をスケジュールするために実際にはQuartzを使用していません。クォーツCronTrigger - 次の火災時間の取得
CronTriggerには、getFireTimeAfter(Date)というメソッドがあります。このメソッドは、指定された日付の後にジョブが次に起動される時刻を返します。提供された日付が現在または将来になると、これはうまく動作します。しかし、それは過去の日付であればうまくいかないようです。 3と毎月の18日23:00に発射するのcronスケジュールをある
Date currTime = new Date();
CronTrigger tr = new CronTrigger();
tr.setCronExpression("0 0 23 3,18 * ? *");
Date nextFireAt = tr.getFireTimeAfter(currTime);
System.out.println("Reference time: " + currTime);
System.out.println("Next fire after reference time: " + nextFireAt);
。だから私はこの今日(8月11日)を行った場合、たとえば、私は以下を参照してください。私は過去に基準日を設定している場合
Reference time: Thu Aug 11 10:04:25 MDT 2011
Next fire after reference time: Thu Aug 18 23:00:00 MDT 2011
しかし、それは私と同じ次の発射時間を与えます。
Reference time: Wed Dec 31 17:00:00 MST 1969
Next fire after reference time: Thu Aug 18 23:00:00 MDT 2011
私は出力があることを期待していた
:
Reference time: Wed Dec 31 17:00:00 MST 1969
Next fire after reference time: Wed Aug 3 23:00:00 MDT 2011
はちょうどそのように動作するか、私は何か間違ったことをやっていることを意図していない方法ですか?
ありがとうございます! Quartz docによると
8月3日は過去です。 – Kal
@Kal - そうだね。私は、たとえそれが過去であっても、与えられた日付の後にトリガがいつ発射されるのかを把握しようとしています。 – cambo