[C#] Liegt das Datum in der Sommerzeit

Drucken
( 0 Votes ) 
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 13.11.2012 Zuletzt aktualisiert am 13.11.2012 Geschrieben von Jonny132
Vielmal kann es nützlich sein, zu wissen ob ein Datum in der Sommerzeit oder Winterzeit liegt.
Wie immer hat das .NET-Framework eine passende Antwort parat, denn das DateTime-Objekt selber hat die Funktion IsDaylightSavingTime(), welche im Prinzip nichts anderes macht als ein true zurückzugeben, wenn es Sommerzeit ist und ein false für die Winterzeit.

Eigene Implementation:
        private bool IsDateSummerTime(DateTime date)
        {
          if (date.Month >= 4 && date.Month < 10)
          {
            return true;
          }
          else if (date.Month == 3 && date > (GetLastSundayOfMonth(date).AddHours(2)))
          {
            return true;
          }
          else if (date.Month == 10 && date <= (GetLastSundayOfMonth(date).AddHours(3)))
          {
            return true;
          }

          return false;
        }
Eigentlich dürfte bei dieser Implementation alles klar sein. Ist der Monat des übergebenen Datums größergleich 4 (April) UND KLEINER 10 (Oktober) so ist das Datum in der Sommerzeit und true wird zurückgegeben.

Da dies jedoch noch sehr ungenau ist müssen wir 2 weitere Prüfungen einbauen.
Dazu benötigen wir die Funktion GetLastSundayOfMonth(), welche im Tutorial [C#] Letzter Sonntag im Monat herausfinden erläutert wurde.

Handelt es sich bei dem Datum um ein Datum im März (Month == 3) UND ist größer als der letzte Sonntag des Monats + 2 Stunden (Die Uhr wird ja immer um 2 Uhr in der Nacht umgestellt), so ist es Sommerzeit.

Ist das Datum im Oktober UND kleinergleich das Datum des letzten Sonntags des Monats + 3 Stunden (Bei der Umstellung wird von 3 Uhr auf 2 Uhr zurückgestellt), so handelt es sich ebenfalls um die Sommerzeit.

Trifft keine der Bedinungen zu, wird false zurückgegeben, was soviel bedeutet wie das Datum befindet sich in der Winterzeit bzw. Normalzeit.

Mithilfe dieser Funktion können wir also Stundengenau feststellen ob es sich bei einem Datum um ein Datum in der Sommer oder Winterzeit handelt.




    Veröffentlichen Sie ihre Kommentare ...