この質問はthis oneに関連していますが、より一般的に保たれ、独立して扱うことができます。Quartz.NET - このユニットテストは合格しませんか?
EDIT:クォーツバージョンは私の理解からv2.0.1の
で、以下のユニットテストに合格する必要があります
[Test]
public void Test() {
// run every first day of month at 14:00 hours
CronExpression expression = new CronExpression("0 0 14 1 * ?");
// TimeZoneInfo.Local = {(UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien}
if (!TimeZoneInfo.Local.SupportsDaylightSavingTime) {
return;
}
// get "summertime" period for current timezone
var daylightChange = TimeZone.CurrentTimeZone.GetDaylightChanges(2013);
// -> daylightChange.Start {31.03.2013 02:00:00} System.DateTime
// -> daylightChange.End {27.10.2013 03:00:00} System.DateTime
// get one startpoint before and one after begin of summertime
DateTimeOffset beforeSummertime = daylightChange.Start.ToUniversalTime().AddDays(-1);
DateTimeOffset afterSummertime = daylightChange.Start.ToUniversalTime().AddDays(1);
// -> beforeSummertime {30.03.2013 01:00:00 +00:00} System.DateTimeOffset
// -> afterSummertime {01.04.2013 01:00:00 +00:00} System.DateTimeOffset
DateTimeOffset? nextValidTimeFromBefore = expression.GetNextValidTimeAfter(beforeSummertime);
DateTimeOffset? nextValidTimeFromAfter = expression.GetNextValidTimeAfter(afterSummertime);
// nextValidTimeFromBefore {01.04.2013 13:00:00 +00:00} System.DateTimeOffset?
// nextValidTimeFromAfter {01.04.2013 12:00:00 +00:00} System.DateTimeOffset?
Assert.AreEqual(nextValidTimeFromBefore, nextValidTimeFromAfter);
}
しかし(あなたが見ることができるように)、nextValidTimeFromBefore
がnextValidTimeFromAfter
とは異なります。 nextValidTimeFromAfter
の結果は正しいです。 UTC 12:00は夏期(すでにその時点で開始)の14:00になります。 GetNextValidTimeAfter()
パラメータでサマータイム期間の内側または外側の時間を指定しても問題ありません。
NextValidTimesが等しいか、私のアプローチに欠陥がありますか?
これは私のために罰金渡す(私はあなたのTZではないよ)と私はちょうどあなたが、詳細ました開始日と終了日と新しい 'DaylightTime'オブジェクトを作成した場合(例えば、 'daylightChange =新しいDaylightTime(新しいDateTime(2013,3,3,1,2,0,0)、新しいDateTime(2013、10,27,2,0,0)、TimeSpan.MinValue)')も通過します。 –
これは私に新しいQuartzバージョンをもう一度見てもらうよう奨励しました。私はすでにサイトの変更ログを確認しましたが、これには関連する修正はありません。しかし、私がリポジトリ内のコミットを見たとき、私はそこに気づいたが、実際にはこれが修正されていた。私は詳細な情報の回答を追加します。 –
私はこれを2.1.2.400、FWIWで試しました –