Das datetime-Modul – Teil 1

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