Python: Datumsabfragen

von Kai Surendorf

Überraschen Sie Ihre Besucher doch mit einer freundlichen Begrüßung passend zur Tageszeit. Dank des Moduls "time" ist das für Python kein Problem. Zugegeben, es gibt produktivere Skripte und eigentlich ist es nur Spielerei. Trotzdem eine gute Gelegenheit, die Funktionalität dieses Python-Moduls zu verinnerlichen.

Ein einfaches Skript:

#!/usr/bin/python
import cgi, time
zeit = time.localtime (zeit)
zeit = time.strftime("%H", (zeit))
zeit = int (zeit)
print "Content-Type: text/plain \n\n"
if zeit >= 0 and zeit < 5:
&nbsp; &nbsp; &nbsp;print "Wie..? Immer noch wach...?"
if zeit >= 5 and zeit < 10:
&nbsp; &nbsp; &nbsp;print "Guten Morgen!"
if zeit >= 10 and zeit < 11:
&nbsp; &nbsp; &nbsp;print "Hallo!"
if zeit >= 11 and zeit < 13:
&nbsp; &nbsp; &nbsp;print "Mahlzeit!"
if zeit >= 13 and zeit < 18:
&nbsp; &nbsp; &nbsp;print "Guten Tag!"
if zeit >= 18 and zeit < 24:
&nbsp; &nbsp; &nbsp;print "Guten Abend!"

Ruft man dieses kleine Skript per Server Side Include an der gewünschten Stelle im HTML-Code auf, so erscheint passend zu Uhrzeit die entsprechende Begrüßung. Das Skript arbeitet vom Aufbau her wie der Formmailer aus diesem Python-Artikel.

Der Ablauf: Zuerst verweisen wir auf den Python-Interpreter und importieren die benötigten Module. In diesem Fall ist es das Modul CGI, um das Ergebnis ausgeben zu können, und das Modul time. Der Variable zeit wird im ersten Schritt die aktuelle Zeit in Sekunden seit dem 1.1.1970 übergeben - dies hängt mit der Zeitmessung unter UNIX-Systemen zusammen.

Die Umrechnung in die aktuelle lokale Zeit können Sie sich sparen, denn Python hält eine kleine Funktion bereit, die diesen Arbeitsschritt für Sie problemlos übernimmt (zeit = time.localtime (zeit)). Interessant für unsere Begrüßungsformel ist ja nur die Uhrzeit. Deshalb werden zu guter Letzt die in der Variable zeit gespeicherten Angaben so umformatiert, dass diese nur noch die Uhrzeit enthält. Dies erfüllt die Funktion strftime des Moduls time. Die in Anführungszeichen gesetzten Zeichen spiegeln das Format wieder, in das die in Klammern angegebene Zeitangabe verwandelt werden soll. %H steht hier einfach für die Stunden. Um das Ergebnis auch abfragen zu können, muss die Zeitangabe in eine ganzzahlige Variable (Integer) konvertiert werden (zeit = int(zeit)). Dies muss erfolgen, da die Stundenzahl um 4 Uhr morgens "04" heißen und damit in den anschließenden if-Abfragen natürlich nicht korrekt abgefragt würde.

Konvertiert man es in einen Integer, fällt die voranstehende Null weg. Sind nun alle Vorkehrungen getroffen, kann man sich an die Ausgabe machen. Dazu übergeben wir erst einmal den Typ der Ausgabe, in diesem Fall soll reiner ASCII-Text ausgegeben werden (print "Content-Type: text/plain \n\n"). Dies mag für Sie unnötig erscheinen, da das Skript ja als SSI aufgerufen wird und von daher per se nur Text ausgeben kann. Für den Python-Interpreter ist das aber nicht so eindeutig. Also müssen Sie ihm mit der Content-Angabe ankündigen, dass hier nun die finale Ausgabe des Skripts erfolgt und er sich anschließend beenden kann. Andernfalls würde es zu einer Fehlermeldung führen.

Weiterführende Beispiele
Die Funktion strftime lässt sich noch für ganz andere Formatierungen der Zeitangabe nutzen.

zeit = time.strftime("%d. %m. %Y", (zeit))
ergäbe vielleicht
07.05.2002
oder
zeit = time.strftime("%H : %M", (zeit))
ergäbe vielleicht
23 : 15

Python-Modul "time": http://www.python.org

 

 
   Anzeigen

Navigation:    Webdesign - Programmierung - Web Grafiken - Software Guides - Tools - Templates - Schriftarten - Seminare - IT News
Partner:   Template OK - PCopen - SITEopen - PCopen Schweiz - HTMLopen Schweiz - VirtualUniversity.ch - WEB-SET.com - YesMMS - Job und Karriere