Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Python #26 – Modul „datetime“

Posted on 25. Januar 202130. April 2023 by Stefan Draeger

Mit dem Modul „datetime“ kannst du in Python das aktuelle Datum ausgeben und auch mit diesen Werten rechnen.

  • importieren des Modules datetime in Python
  • Zeitstempel erzeugen
  • Zugriff auf die Felder eines Zeitstempels
  • Unixzeitstempel abfragen
    • rechnen mit dem Unixzeitstempel
  • Datum & Uhrzeit
    • vergleichen von Datums Werten

importieren des Modules datetime in Python

Damit wir mit dem Modul arbeiten können, müssen wir dieses zunächst importieren. Wie du ein Modul in ein Python3 Skript importierst habe ich im Beitrag Python #18: laden von Modulen bereits ausgiebig  erläutert.

Die Bibliothek datetime enthält sehr viele andere Module welche wir für diesen Beitrag nicht benötigen daher importieren wir „nur“ das „datetime“ Modul aus dieser Bibliothek.

from datetime import datetime
print (datetime.now())

In diesem kleinen Codeschnippsel habe ich mir gleich noch den aktuellen Zeitstempel ausgeben lassen.

Python3 - Modul "datetime" mit Funktion "now()"
Python3 – Modul „datetime“ mit Funktion „now()“

An der Ausgabe ist zu erkennen dass, das Format im Amerikanischen Stil ist, d.h. Jahr-Monat-Tag. Wenn wir dieses ändern wollen so müssen wir uns dieses mit der Funktion „strftime“ in unser gewünschtes Format umwandeln.

Python3 - Modul "datetime" formatieren des Zeitstempels mit strftime
Python3 – Modul „datetime“ formatieren des Zeitstempels mit strftime

In meinem Fall habe ich die Millisekunden entfernt da diese in der Regel nicht interessant sind.

Du findest in der offiziellen Python Dokumentation eine sehr gute Übersicht über die verfügbaren Platzhalter um das Datum bzw. die Uhrzeit nach deinen Wünschen zu formatieren.

Zeitstempel erzeugen

Im ersten Beispiel habe ich dir gezeigt wie du den aktuellen Zeitstempel auslesen bzw. ausgeben kannst. Du kannst dir aber auch zu einen Benutzerdefinierten Zeitstempel ein datetime Objekt erzeugen. Dazu musst du dem Objekt „datetime“ in runden Klammern die Werte deines Zeitstempels übergeben.

dt = datetime(2020, 12   , 24 , 18    , 30     , 0)
            ##Jahr, Monat, Tag, Stunde, Minute, Sekunde
print(dt)

Die Ausgabe auf der Konsole ist dann der 24.12.2020 um 18:30:00.

Python3 - Modul "datetime", benutzerdefinierter Zeitstempel
Python3 – Modul „datetime“, benutzerdefinierter Zeitstempel

Zugriff auf die Felder eines Zeitstempels

Wir haben bereits gesehen das der Zeitstempel welcher sich in unserem datetime Objekt befindet sich aus den Feldern, Jahr, Monat, Tag, Stunde, Minute, Sekunde zusammen setzt und wir können mit der Funktion strftime diesen Wert beliebig formatieren. Jedoch gibt es auch einmal anwendungfälle wo wir nur das aktuelle Jahr wissen wollen (oder den Monat, etc.). Hier können wir bequem auf die Variablen in dem Objekt zugreifen.

from datetime import datetime
now = datetime.now()

print ("Jahr\t",now.year)
print ("Monat\t", now.month)
print ("Tag\t", now.day)
print ("Stunde\t", now.hour)
print ("Minute\t", now.minute)
print ("Sekunde\t", now.second)

Wenn wir diesen Code nun ausführen dann werden die Felder des Zeitstempels auf der Konsole ausgegeben.

Python3 - Modul "datetime" ausgeben der Felder eines Zeitstempels
Python3 – Modul „datetime“ ausgeben der Felder eines Zeitstempels

Unixzeitstempel abfragen

Aus dem datetime Modul läßt sich auch der Unixzeitstempel ablesen. Dieser Wert repräsentiert die vergangenen Sekunden seit dem 01.01.1970. Wir können diesen Wert zbsp. nutzen um ein Zeitstempel bequem in einer Datenbank zu speichern oder aber auch um die Differenz zwischen zwei Daten zu berechnen.

Im nachfolgenden Beispiel berechne ich wieviele Sekunden zwischen jetzt und Heiligabend liegt.

from datetime import datetime
now = datetime.now()
xmas = datetime(2020, 12, 24, 18, 30, 0)
seconds = xmas.timestamp() - now.timestamp() 
print("Es sind noch", seconds , "Sekunden bis Heiligabend!")

Die Ausgabe ist dann wie folgt:

Python3 - Modul "datetime" rechnen mit dem Unixtimestamp
Python3 – Modul „datetime“ rechnen mit dem Unixtimestamp

rechnen mit dem Unixzeitstempel

Wenn wir nun einen Zeitstempel für morgen, oder nächstes Jahr ab jetzt haben möchten so können wir dieses recht einfach berechnen. Wir benötigen nur die Sekunden von 24h und können somit Tageweise (oder Stunden) nach oben oder unten im Datum „rollen“.

Im nachfolgenden Code berechne ich den Zeitstempel für morgen und dem nächsten Jahr, ausgehend von dem aktuellen Zeitstempel.

#Bibliothek datetime
from datetime import datetime
#auslesen des aktuellen Zeitstempels
now = datetime.now()
#auslesen des Unixtimestamps
timestamp = now.timestamp()

#ein Tag hat 86400 Sekunden...
secondsOneDay = 86400
#Zeitstempel für morgen ist der aktuelle + Sekunden eines Tages
nextDay = datetime.fromtimestamp(timestamp + secondsOneDay)

#Zeitstempekl für nächstes Jahr ist aktueller Zeitstempel + (365 * Sekunden eines Tages)
#ACHTUNG: Dieses Berechnung beinhaltet kein Schaltjahr! 
timestamp += (secondsOneDay * 365)
nextYear = datetime.fromtimestamp(timestamp)

#Ausgeben der Daten
print("heute\t\t",now) 
print("morgen\t\t", nextDay) 
print("naechstes Jahr\t", nextYear) 

Ausgabe auf der Konsole:

Python3 - Modul "datetime" rechnen mit dem Unixtimestamp
Python3 – Modul „datetime“ rechnen mit dem Unixtimestamp

Datum & Uhrzeit

Neben dem Modul „datetime“ beinhaltet die Bibliothek auch nur die Module „date“ & „time“. Diese beiden Module enthalten jeweils nur die jeweiligen Daten zu diesem Teil eines Zeitstempels.

#Module date & time aus der Bibliothek datetime importieren
from datetime import date, time

#erzeugen eines Datumsobjektes
d = date(2020,12,22)
#auslesen der Felder eines Datums
year = d.year
month = d.month
day = d.day

#erzeugen eines Zeitobjektes
t = time(18,45,34)
#auslesen der Felder einer Uhrzeit
hour = t.hour
minute = t.minute
seconds = t.second
milliseconds = t.microsecond

#Ausgeben der Werte
print("Jahr\t\t",year)
print("Monat\t\t",month)
print("Tag\t\t",day)

print("Stunde\t\t",hour)
print("Minute\t\t",minute)
print("Sekunde\t\t",seconds)
print("Millisekunde\t",milliseconds)

Es bleibt die Frage offen: Wozu brauchen wir das denn? Es gibt doch das Modul datetime welches die gleichen Felder enthält!

vergleichen von Datums Werten

Wenn wir nun zwei Daten vergleichen wollen und eigentlich nur das Datum so müsste man zunächst am datetime Objekt die Felder der Uhrzeit auf „0“ setzen. Oder man entnimmt aus dem datetime Objekt nur das Datum bzw. die Uhrzeit.

#Module datetime, date & time aus der Bibliothek datetime importieren
from datetime import datetime
from time import sleep

date1 = datetime.now()
#5 Sekunden Pause
sleep(5)
date2 = datetime.now()

#Ausgeben der beiden Zeitstempel
print(date1)
print(date2)

#vergleichen der beiden Zeitstempel
print("Datum & Uhrzeit gleich? ", date1 == date2)
print("Datum gleich?", date1.date() == date2.date())
print("Uhrzeit gleich?", date1.time() == date2.time())

Python3 - Modul "datetime" Vergleich von Datum & Uhrzeit
Python3 – Modul „datetime“ Vergleich von Datum & Uhrzeit

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}