In Python kann man Datums- und Zeitangaben mit der Standardbibliothek datetime verwalten.
Das datetime-Modul enthält mehrere Klassen. Dabei sollte man darauf achten, die Namen der Modul- und datetime-Klassen nicht zu verwechseln, da es sich bei beiden um „datetime“ handelt.
- datetime.datetime: Datum und Uhrzeit
- datetime.date: Datum
- datetime.time: Zeit
- datetime.timedelta: Zeit-Differenz
datetime-Objekte
datetime-Objekte speichern sowohl Informationen über das Datum (Jahr, Monat, Tag) als auch über die Zeit (Stunde, Minute, Sekunde, Mikrosekunde). Man kann auf diese Informationen über die Attribute year, month, day, hour, minute, second und microsecond zugreifen.
datetime.now(): Tagesdatum und aktuelle Zeit
Mit datetime.now() kann man ein datetime-Objekt erstellen, das das aktuelle Datum und die aktuelle Uhrzeit darstellt.
Attribute wie year werden als Ganzzahlen (int) gespeichert. Dies gilt auch für Attribute von date- und time-Objekten.
import datetime
dt_now = datetime.datetime.now()
print(dt_now)
# 2023-07-05 09:26:36.733932
print(type(dt_now))
# <class 'datetime.datetime'>
print(dt_now.year)
# 2023
print(type(dt_now.year))
# <class 'int'>
Konstruktor des datetime-Objektes
Um ein datetime-Objekt für ein beliebiges Datum und eine beliebige Uhrzeit zu erstellen, verwendet man den Konstruktor:
datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
year, month und day müssen angegeben werden, während hour, minute, second and microsecond optional sind, und wenn sie nicht angegeben werden, standardmäßig mit 0 vorbelegt sind.
print(datetime.datetime(2023, 4, 1, 20, 15, 30, 2000))
# 2023-04-01 20:15:30.002000
print(datetime.datetime(2023, 4, 1))
# 2023-04-01 00:00:00
date- und time-Objekte vom datetime-Objekt erzeugen
Man kann ein datetime-Objekt mit der Methode date() in ein date-Objekt und mit der Methode time() in ein time-Objekt umwandeln.
dt = datetime.datetime(2023, 4, 1, 20, 15, 30, 2000)
d = dt.date()
print(d)
# 2023-04-01
print(type(d))
# <class 'datetime.date'>
t = dt.time()
print(t)
# 20:15:30.002000
print(type(t))
# <class 'datetime.time'>
datetime-Objekt aus date- und time-Objekt erzeugen
Mit datetime.combine() kannn man ein datetime-Objekt aus date- und time-Ojekten erstellen.
print(datetime.datetime.combine(d, t))
# 2023-04-01 20:15:30.002000
date-Objekte
date-Objekte speichern nur Datumsinformationen (Jahr, Monat und Tag). Man kann auf diese Informationen über die Attribute year, month und day zugreifen.
date.today(): Tagesdatum
Mit date.today() kann man ein Datumsobjekt erstellen, das das aktuelle Datum (das heutige Datum) darstellt.
d_today = datetime.date.today()
print(d_today)
# 2023-07-05
print(type(d_today))
# <class 'datetime.date'>
print(d_today.month)
# 7
Konstruktor des date-Objektes
Um ein date-Objekt für ein beliebiges Datum zu erstellen, verwendet man den Konstruktor:
date(year, month, day)
Alle Argumente sind erforderlich und können nicht weggelassen werden.
print(datetime.date(2023, 4, 1))
# 2023-04-01
time-Objekte
time-Objekte speichern nur Zeitinformationen (Stunde, Minute, Sekunde und Mikrosekunde). Man kann auf diese Informationen über die Attribute hour, minute, second and microsecond zugreifen.
aktuelle Zeit mit dem time-Objekt
Ab Python 3.11 gibt es keine direkte Methode zur Erstellung eines time-Objekts, das die aktuelle Zeit darstellt!. Man kann datetime.now() verwenden, um ein datetime-Objekt für das aktuelle Datum und die aktuelle Uhrzeit zu erstellen, und es dann mit der Methode time() in ein Zeitobjekt umwandeln.
t_now = datetime.datetime.now().time()
print(t_now)
# 10:29:53.809250
print(type(t_now))
# <class 'datetime.time'>
print(t_now.hour)
# 10
Konstruktor des time-Objektes
Um ein time-Objekt für einen beliebigen Zeitpunkt zu erstellen, verwendet man den Konstruktor:
time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
Alle Argumente sind optional und können weggelassen werden. Wenn sie nicht angegeben werden, sind sie standardmäßig mit 0 vorbelegt.
print(datetime.time(20, 15, 30, 2000))
# 20:15:30.002000
print(datetime.time())
# 00:00:00
print(datetime.time(20, 15, 30, 2000))
# 20:15:30.002000
print(datetime.time())
# 00:00:00