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:

Beispiel-Seite Anzeigebeispiel: So sieht's aus (Zum Aufruf des Scripts ist eine Internet-Verbindung erforderlich)

#!/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 erst mal um 1 erhöht, da der Rückgabewert intern bei 0 zu zählen beginnt, für Monate also beispielsweise 0 bis 11 ermittelt, nicht wie im normalen Gebrauch üblich von 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.
Das Jahr wird um 1900 erhöht. Der Grund ist, dass der Rückgabewert für das Jahr die Anzahl Jahre seit 1900 sind. Für das Jahr 2000 wird also beispielsweise 100 zurückgegeben. 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 Beispiel-Script 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:

Beispiel-Seite Anzeigebeispiel: So sieht's aus (Zum Aufruf des Scripts ist eine Internet-Verbindung erforderlich)

#!/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
 

© 2005 Seite Impressum