Berechnen der Zeitzone mit Perl

Für manche Programmiersprachen muss die Zeitzone eingegeben werden, mit Perl kann man sie berechnen

Die Zeitzone drückt die Differenz zwischen localtime() und gmtime() aus. Wenn mit der Zeitzone gerechnet werden soll, muss sie in einer definierten Zeiteinheit vorliegen. Betrachte untenstehenden Code, welcher die Zeitzone in Sekunden berechnet:

# returnvalue in seconds
sub zeitzone{
    my $self = shift;
    my $lo = [localtime(12*3600)];
    my $raw = ($lo->[3]- 1) * 86400 + $lo->[2] * 3600 + $lo->[1] * 60 + $lo->[0];
    return $raw - 43200;
}

Alle Zeitzonen dieser Welt erstrecken sich von -12 (westliche Datumsgrenze) bis +13 Stunden bezogen auf UTC bzw. GMT. Zum Vereinfachen der Zeitzonenberechnung wird in obenstehender Funktion mit localtime(12*3600) gegenüber 1970-01-01 00:00:00 ein definierter Vorlauf geschaffen was die Berechnung vereinfacht. D.h., über alle möglichen Zeitzonen hinweg ändert sich mit diesem Vorlauf maximal der Tag, womit Jahr und Monat aus der Berechnung rausfallen.

Hinweis: In der Zeitzone ist DST (Sommerzeit) implizit enthalten. Da sie jedoch länderspezifisch zu unterschiedlichen Zeiten eingeführt wurde, liefert die Funktion localtime() mit unterschiedlichen Zeitstempel auch unterschiedliche Ergebnisse. Aktuell auf diesem Server ist eine Zeitzone von GMT +1.00 Stunden (3600 Sekunden) eingestellt.

Obenstehende Funktion berechnet die Zeitzone zum Zeitpunkt 2.1.1970. Sofern DST zu diesem Zeitpunkt gilt, geht dies in die Berechnung der Zeitzone ein, was aber nur auf Länder der südlichen Halbkugel zutrifft. Mit dem CODE untenstehend hingegen erfolgt die Berechnung der Zeitzone mit der aktuellen Zeit:

use Time::Local;
print timegm(localtime) - time;

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