Frank Schönmann: Wochentag eines beliebigen Datums

Beitrag lesen

hi!

Wie bekomme ich aber die Sekunden seit 01.01.1970, die bis zu einem beliebigen Datum
verstrichen sind, ohne mühsam herumzurechnen?
Also time() und seine Nachbarn wie localtime() lassen sich in Perl meines Wissens immer
nur fuer den aktuellen Zeitpunkt aufrufen.

Irrtum. time liefert die aktuelle Zeit in Sekunden seit 1970. localtime und gmtime wandeln eine in Sekunden seit 1970 angegebene Zeit in ein lesbares Format oder eine Liste mit Datums-/Zeitwerten um. Werden localtime oder gmtime jedoch ohne Paramter aufgerufen, rufen sie ihrerseits time auf, um die aktuelle Zeit zu erhalten.

Man muss localtime also nur die Sekundenzahl eines bestimmten Datums übergeben und erhält in der zurückgelieferten Liste auch den Wochentag. Um allerdings die Sekunden aus einem normalen Datum zu erhalten, braucht man die Funktion timelocal aus dem Modul Time::Local.

Folgendes sollte funktionieren:
=== cut ===
use Time::Local;
$TIME = timelocal($sekunde, $minute, $stunde, $tag, $monat, $jahr);
($tmp, $tmp, $tmp, $tmp, $tmp, $tmp, $wochentag) = localtime $TIME;
=== cut ===

Zu beachten ist, dass timelocal erwartet, dass vom Jahr 1900 abgezogen wurde, vom Monat 1. Der 6. April 1980 wäre also $tag = 6, $monat = 3, $jahr = 80.

bye, Frank!