Beginn und Ende der Sommerzeit berechnen mit Perl

Zu bestimmen ist das Datum des letzten Wochenendes März Oktober

Der Algorithmus ist recht einfach zu verstehen wenn man davon ausgeht, dass jeder Wochentag einen numerischen Wert hat: 0 bzw, 7 ist der Sonntag und der Montag, mit dem die Woche beginnt, bekommt die 1. Als nächstes ist der numerische Wochentag für den 31. März bzw. Oktober zu bestimmen. So fällt der 31.3.2017 auf einen Freitag und dieser Tag hat die Nummer 5. Wenn wir nun von 31 - 5 abziehen, erhalten wir 26 und genau das ist das Datum für den letzten Sonntag im Monat März.

Oktober: Der 31.10.2017 fällt auf einen Dienstag und hat damit die Nummer 2. Wir rechnen 31 - 2 und erhalten so den 29.10.2017 als das Datum für den Tag an dem die Sommerzeit zuende ist.

Julianische Tage nach Scaliger

Der Julianische Tag (ab 1.1.-4713 lückenlos gezählte Tage) ist lediglich durch 7 zu teilen und der Rest zu bestimmen, woraus sich der numerische Wochentag ergibt.

 sprintf(
   "%d.03.%d",
   31 - Scaliger->new( date => "31.3.$year" )->wd,
   $year
 );

Beginn und Ende der Sommerzeit: 26.03.2017 und 29.10.2017

Oder hier auf das Jahr 2018 klicken, Ergebnis obenstehend.


Anbieter: nmq​rstx-18­@yahoo.de, die Seite verwendet funktionsbedingt einen Session-Cookie und ist Bestandteil meines nach modernen Aspekten in Perl entwickelten Frameworks.