Tipp 2.24 - Sommerzeit & Winterzeit

Wie kann ich die Sommerzeit bzw. Winterzeit im Voraus errechnen?

Na, haben Sie dieses Jahr auch verschlafen ;o)? In den Mitgliedstaaten der EU wird jedes Jahr am letzten Sonntag im März um 2 Uhr morgens die Zeit um eine Stunde vorgestellt. Die Sommerzeit endet immer am letzten Sonntag im Oktober um 3 Uhr morgens (Winterzeit, hier wird die Uhrzeit wieder um eine Stunde zurückgestellt).

Damit Sie zukünftig ein bissel vorausplanen können, haben wir Ihnen eine kleine Funktion vorbereitet, die Ihnen diese Termine errechnet. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

Beispiel:

' Für die Auswahl der Zeitumstellung
Public Enum eClockChange
  eSummertime = 1
  eWintertime = 2
End Enum
 
Public Function DaylightSaving(plYear As Long, _
                               peSavingTime As eClockChange) _
                               As Date
  '// -----------------------------------------------------
  '// Methode   | Ermittelt die Sommer- bzw. Winterzeit
  '               eines Jahres
  '// -----------------------------------------------------
  '// Parameter | plYear - gewünschtes Jahr
  '               peSavingTime - Sommer-/Winterzeit
  '// -----------------------------------------------------
  '// Rückgabe  | Date = Ermitteltes Datum
  '// -----------------------------------------------------
  '// Erstellt  | Stefan Kulpa
  '//           | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
  '// Beispielaufruf:
  '// ?DaylightSaving(2006,eWintertime)
  '// -----------------------------------------------------
 
  Dim dtDaySaving As Date
 
  If peSavingTime = eSummertime Then
    dtDaySaving = DateSerial(plYear, 3, 31)
  Else
    dtDaySaving = DateSerial(plYear, 10, 31)
  End If
  dtDaySaving = DateAdd("d", -DatePart("w", dtDaySaving, _
                                       vbMonday) _
                                       Mod 7, dtDaySaving)
 
  DaylightSaving = dtDaySaving
 
End Function