Quartz.NET - Sollte dieser Komponententest nicht bestehen?

Diese Frage bezieht sich aufdieses, wird aber allgemeiner gehalten und kann unabhängig behandelt werden.

BEARBEITEN: Quartz-Version ist v2.0.1

Nach meinem Verständnis sollte der folgende Komponententest bestehen:

[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);
}  

Allerdings (wie Sie sehen können), dienextValidTimeFromBefore unterscheidet sich vonnextValidTimeFromAfter. Das Ergebnis innextValidTimeFromAfter ist richtig. Die UTC 12:00 führt im Sommer zu 14:00 Uhr (was bereits zu diesem Zeitpunkt begonnen hat). Es sollte egal sein, ob dieGetNextValidTimeAfter() Parameter gibt eine Zeit innerhalb oder außerhalb der Sommerzeit an.

Sollten die NextValidTimes gleich sein oder ist mein Ansatz fehlerhaft?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage