Diese Seiten sind Teil von Bachsau’s Archiv.
Die hier beschriebenen Praktiken entsprechen nicht mehr dem Stand der Technik!
Bitte nutzen Sie für aktuelle Projekte das fortlaufend aktualisierte SELFHTML-Wiki.

SELFHTML

Funktionen für Datum und Uhrzeit

Informationsseite

nach unten Allgemeines zu diesen Funktionen
nach unten gmtime - Zeitpunkt in Datums-/Uhrzeit-Elemente aufschlüsseln (Greenwich-Zeitzone)
nach unten localtime - Zeitpunkt in Datums-/Uhrzeit-Elemente aufschlüsseln (lokale Zeitzone)
nach unten time - Zeitpunkt ermitteln

 nach unten 

Allgemeines zu diesen Funktionen

Die Basisfunktion der Zeitberechnung unter Perl ist nach unten time. Sie ermittelt den aktuellen Zeitpunkt, und zwar in Sekunden, die seit dem logischen Unix-Urknall, seit dem 1.1.1970, 0.00 Uhr, vergangen sind. Mit dieser Zahl können Sie dann eine der Funktionen nach unten localtime oder nach unten gmtime versorgen, um die einzelnen Elemente von Datum und Uhrzeit des aktuellen Zeitpunkts zu erhalten, also etwa Tag, Monat, Jahr oder Stunden und Minuten der Uhrzeit.

Beachtenswert ist auch das Seite Standardmodul Time::Local. Dort finden Sie Umkehrfunktionen zu den hier vorgestellten Funktionen nach unten localtime und nach unten gmtime.

nach obennach unten

gmtime - Zeitpunkt in Datums-/Uhrzeit-Elemente aufschlüsseln (Greenwich-Zeitzone)

Funktioniert genauso wie nach unten localtime, mit dem einzigen Unterschied, dass nicht die Uhrzeit auf dem Rechner ermittelt wird, sondern die Greenwich-Zeit (Nullmeridian).

nach obennach unten

localtime - Zeitpunkt in Datums-/Uhrzeit-Elemente aufschlüsseln (lokale Zeitzone)

Ermittelt für einen Zeitpunkt die einzelnen Zeitangaben.

Erwartet als Parameter:
1. die Anzahl Sekunden, gerechnet ab dem 1.1.1970, bis zum gewünschten Zeitpunkt. Um die Daten für den aktuellen Zeitpunkt zu ermitteln, einfach time oder gar nichts übergeben.

Gibt wahlweise eine Liste zurück, die aus 9 Elementen besteht, in denen die Einzeldaten gespeichert sind, oder eine Zeichenkette, gemäß der C-Funktion ctime, die zum ANSI-Standard gehört.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
    $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat+=1;
$Jahrestag+=1;
$Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat;
$Monatstag = $Monatstag < 10 ? $Monatstag = "0".$Monatstag : $Monatstag;
$Stunden = $Stunden < 10 ? $Stunden = "0".$Stunden : $Stunden;
$Minuten = $Minuten < 10 ? $Minuten = "0".$Minuten : $Minuten;
$Sekunden = $Sekunden < 10 ? $Sekunden = "0".$Sekunden : $Sekunden;
$Jahr+=1900;
my @Wochentage = ("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
my @Monatsnamen = ("","Januar","Februar","M&auml;rz","April","Mai","Juni",
           "Juli","August","September","Oktober","November","Dezember");

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print "Datum (Variante 1): $Wochentage[$Wochentag], der $Monatstag.$Monat.$Jahr<br>\n";
print "Datum (Variante 2): $Wochentage[$Wochentag], der $Monatstag. $Monatsnamen[$Monat] $Jahr<br>\n";
print "Uhrzeit (Variante 1): $Stunden.$Minuten Uhr<br>\n";
print "Uhrzeit (Variante 2): $Stunden.$Minuten:$Sekunden Uhr<br>\n";
print "Der heutige Tag ist der $Jahrestag. Tag im laufenden Jahr<br>\n";
print "Als CTIME-Ausgabe lautet dieser Zeitpunkt: $CTIME_String<br>\n";
$Sommerzeit ? print "Es ist Sommerzeit\n" : print "Es ist Normalzeit (keine Sommerzeit)\n";
print "</body></html>\n";

Erläuterung:

Das Beispiel ermittelt die Zeitangaben des aktuellen Zeitpunkts, und zwar einmal im Listenkontext (erster Aufruf von localtime), und einmal im skalaren Kontext (zweiter Aufruf). Anschließend bereitet das Script die ermittelten Daten für die Ausgabe auf. Denn die zurückgegebenen Werte sind in vielen Fällen eher "Rohdaten", die für eine ordentliche Ausgabe noch nachbehandelt werden müssen.
Die Werte für $Monat und $Jahrestag werden zunächst um 1 erhöht, da der Rückgabewert intern bei 0 zu zählen beginnt (für Monate gelten anfangs die Monatsnummern 0 bis 11, und nicht 1 bis 12).
Dann werden diverse Angaben so formatiert, dass sie eine führende 0 erhalten, falls der Wert kleiner als 10 ist. Denn eine Uhrzeitangabe wie 8.1 ist wohl kaum erwünscht, es soll schließlich 08.01 ausgegeben werden. Erreicht wird dies mit Hilfe einer Seite einfachen Entweder-Oder-Abfrage.
Die Jahreszahl wird um 1900 erhöht. Der Grund: der (numerische) Rückgabewert für das Jahr besteht in der Anzahl Jahre seit 1900. Für das Jahr 2000 würde also beispielsweise 100 zurückgegeben. Erst durch das Hinzuzählen von 1900 gelangt man zur tatsächlichen Jahreszahl.
Die dann definierten Listen für Wochentage und Monatsnamen bieten für die spätere Ausgabe die Möglichkeit, deutschsprachige Zeitbezeichnungen zu verwenden.
Das Beispielscript erstellt HTML-Code, um die ermittelten Daten auszugeben. Dabei kann sich das Script auf die nachbehandelten Daten verlassen.

nach obennach unten

time - Zeitpunkt ermitteln

Ermittelt die Anzahl Sekunden, die vom 1.1.1970 0.00 Uhr bis zum Augenblick des Aufrufs vergangen sind.

Erwartet keinen Parameter.

Gibt die Anzahl Sekunden zurück.

Beispiel eines vollständigen CGI-Scripts in Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $Sekunden = time();
my $Stunden = int($Sekunden / 3600);
my $Tage = int($Sekunden / (24 * 3600));
my $Wochen = int($Sekunden / (7 * 24 * 3600));

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print "seit dem 1.1.1970, 0.00 Uhr sind $Sekunden Sekunden vergangen.<br>\n";
print "Das sind $Stunden Stunden, $Tage Tage und $Wochen Wochen.\n";
print "</body></html>\n";

Erläuterung:

Das Beispiel ruft time auf und speichert den Rückgabewert der Funktion in den Skalar $Sekunden. Anschließend berechnet das Script aus der Sekundenzahl die darin enthaltenen Stunden, Tage und Wochen. Um jeweils nur die ganzzahligen Anteile der Bruchberechnungen zu erhalten, wird die Funktion Seite int darauf angewendet. Zur Kontrolle gibt das Script HTML-Code mit den ermittelten Zahlen aus.

 nach oben
weiter Seite Funktionen für Ein-/Ausgabe und Lesen/Schreiben von Daten
zurück Seite Funktionen für die Kontrolle des laufenden Scripts
 

© 2007 Seite Impressum

Originaladresse dieses Dokuments: http://de.selfhtml.org/perl/funktionen/datumzeit.htm