Bitte warten...

Python: Zeit und Datum

► Python-Dokumentation: time datetime calendar

Zeitangaben werden üblicherweise als Zeitstempel in der Unixzeit angegeben. Die Unixzeit zählt die Sekunden ab dem 1. Januar 1970 um 0:00 Uhr UTC. Die Zeitstempel in Python sind vom Datentyp float, wobei die Nachkommastelle den Millisekunden-Anteil angibt. Um Zeitstempel zu erzeugen oder in ein menschenlesbares Format umzuwandeln, stehen verschiedene Funktionen aus dem Modul time zur Verfügung. Weiterführende Funktionen sind in den Modulen datetime sowie calendar enthalten, auf die hier nicht weiter eingegangen wird.

Code kopieren
import time

now = time.time()
print("Aktueller Zeitstempel:", now)

Weltzeit und Ortszeit

► Python-Dokumentation: gmtime localtime

Über die Funktionen gmtime und localtime können verschiedene Zeit- und Datumsangaben eines Zeitstempels ermittelt werden. Wird die Funktion ohne Angabe eines Arguments aufgerufen, so wird der aktuelle Zeitpunkt übergeben.

Während mit gmtime ein Zeitobjekt in Weltzeit (UTC) erzeugt wird, erhält man mit localtime ein Zeitobjekt in der Zonenzeit des Rechners, auf dem Python ausgeführt wird (unter Berücksichtigung einer Sommerzeitregelung).

Code kopieren
datetime = time.gmtime(   1634177174)  # 14. Oktober 2021, 02:06:14 Uhr UTC (= GMT)
datetime = time.localtime(1634177174)  # 14. Oktober 2021, 04:06:14 Uhr CEST (= MESZ)

now = time.localtime()  # gleichbedeutend mit time.localtime(time.time())

print("Jahr:", now.tm_year)
print("Monat:", now.tm_mon)
print("Tag:", now.tm_mday)
print("Stunde:", now.tm_hour)
print("Minute:", now.tm_min)
print("Sekunde:", now.tm_sec)

print("Wochentag:", now.tm_wday)  # Montag = 0
print("Tag des Jahres:", now.tm_yday)
print("Sommerzeit:", now.tm_isdst)  # Sommerzeit: 1; Winterzeit: 0
print("Zeitzone:", now.tm_zone)
print("Differenz zu UTC in Sekunden:", now.tm_gmtoff)

Zeitstempel mit mktime erzeugen

► Python-Dokumentation: mktime

Mit der Funktion mktime() lässt sich aus einer lokalen Zeitangabe ein Zeitstempel erzeugen. Die für diese Funktion benötigten Argumente können aus folgendem Beispiel abgeleitet werden:

Code kopieren
jahr = 2013
monat = 2
tag = 7
stunde = 18
minute = 30
sekunde = 15

timestamp = time.mktime((jahr, monat, tag, stunde, minute, sekunde, 0, 0, 0))
print(timestamp)

Zeitstempel mit timegm erzeugen

► Python-Dokumentation: timegm

Mit der Funktion timegm() lässt sich aus einer UTC-Zeitangabe ein Zeitstempel erzeugen. Diese Funktion ist allerdings im Modul calendar enthalten, das zunächst importiert werden muss. Die für diese Funktion benötigten Argumente können aus folgendem Beispiel abgeleitet werden:

Code kopieren
import calendar

jahr = 2013
monat = 2
tag = 7
stunde = 18
minute = 30
sekunde = 15

timestamp = calendar.timegm((jahr, monat, tag, stunde, minute, sekunde, 0, 0, 0))
print(timestamp)

Zeitstempel mit strftime auswerten

► Python-Dokumentation: strftime

Mit der Funktion strftime() lassen sich in Verbindung mit localtime() aus einem Zeitstempel weitere Zeitangaben ermitteln, die als String zurückgegeben werden. Die gewünschten Zeitangaben können über spezielle Direktiven ermittelt werden, die als %-Zeichen gefolgt von einem Buchstaben angegeben werden.

Um die Strings für Monatsnamen und Wochentagnamen in der Sprache der Benutzersystems auszugeben, kann die Spracheinstellung mit der Funktion setlocale() aus dem Modul locale eingestellt werden.

Code kopieren
import time, locale
locale.setlocale(locale.LC_ALL, '')

...

datetime = time.localtime(timestamp)
print(time.strftime("Tag: %d", datetime))
print(time.strftime("Monat: %m", datetime))
print(time.strftime("Jahr: %Y", datetime))
print(time.strftime("Stunde: %H", datetime))
print(time.strftime("Minute: %M", datetime))
print(time.strftime("Sekunde: %S", datetime))

print(time.strftime("Stunde im 12-Stunden-Format: %I", datetime))
print(time.strftime("AM/PM: %p", datetime))
print(time.strftime("Kompakte Form: %c", datetime))
print(time.strftime("Datum: %x", datetime))
print(time.strftime("Zeit: %X", datetime))
print(time.strftime("Jahr mit zwei Stellen: %y", datetime))
print(time.strftime("Tag des Jahres: %j", datetime))
print(time.strftime("Wochentag Kurzform: %a", datetime))
print(time.strftime("Wochentag Langform: %A", datetime))
print(time.strftime("Tag der Woche: %w", datetime))  # Sonntag = 0
print(time.strftime("Monat Kurzform: %b", datetime))
print(time.strftime("Monat Langform: %B", datetime))
print(time.strftime("Woche des Jahres (beginnend mit Sonntag): %U", datetime))
print(time.strftime("Woche des Jahres (beginnend mit Montag): %W", datetime))
print(time.strftime("Zeitzone: %Z", datetime))