Python datetime: Vollständiger Guide zu Datum, Zeit und Zeitzonen

目次

1. Einführung

Beim Umgang mit Datum und Uhrzeit in Python ist das datetime-Modul unverzichtbar. Mit diesem Modul können Sie die aktuelle Uhrzeit abrufen, Datums- und Zeitformate konvertieren, Zeitberechnungen durchführen und vieles mehr – eine Vielzahl von Operationen ist möglich.

Jedoch kann der Umgang mit datetime für Python-Anfänger etwas schwierig erscheinen. Zum Beispiel:

  • „Ich möchte das aktuelle Datum oder die Uhrzeit abrufen, aber welche Funktion soll ich verwenden?“
  • „Ich verstehe nicht, wie ich die Uhrzeit unter Berücksichtigung der Zeitzone verarbeite!“
  • „Wie berechne ich Daten?“

In diesem Artikel erklären wir das datetime-Modul in Python von den Grundlagen bis zu fortgeschrittenen Anwendungen klar und verständlich. Damit auch Anfänger es reibungslos verstehen können, integrieren wir Code-Beispiele in die Erklärungen, also nutzen Sie das bitte als Referenz.

2. Was ist das datetime-Modul? Lassen Sie uns die grundlegenden Konzepte verstehen

2.1 Überblick über das datetime-Modul

Python stellt als Standardbibliothek dasdatetime-Modul zur Verfügung, mit dem das Arbeiten mit Datum und Uhrzeit einfach möglich ist.datetime-Modul enthält folgende wichtige Klassen.

KlassennameÜberblick
datetimeKlasse zum Umgang mit Datum und Uhrzeit
dateKlasse nur für Datum
timeKlasse nur für Uhrzeit
timedeltaKlasse zur Darstellung von Zeitdifferenzen
tzinfoKlasse zum Umgang mit Zeitzoneninformationen

Darunter wird diedatetime-Klasse am häufigsten verwendet.

2.2 Methode zum Importieren des datetime-Moduls

Um dasdatetime-Modul in Python zu verwenden, muss es zuerst importiert werden. Durch die Verwendung vonimport datetime wie folgt kann das gesamte Modul importiert werden.

import datetime

# Aktuelles Datum und Uhrzeit abrufen
now = datetime.datetime.now()
print(now)

Es ist auch möglich, nur bestimmte Klassen zu importieren.

from datetime import datetime

# Aktuelles Datum und Uhrzeit abrufen
now = datetime.now()
print(now)

Durch den Import in der Formfrom datetime import datetime mussdatetime im Code nicht doppelt geschrieben werden, wie z. B. datetime.datetime.now(), was den Code einfacher macht.

年収訴求

3. Methode zum Abrufen der aktuellen Uhrzeit und des heutigen Datums in Python (Unterschied zwischen now und today)

3.1 Methode zum Abrufen des aktuellen Datums und der Uhrzeit

In Python wird datetime.now() verwendet, um das aktuelle Datum und die Uhrzeit abzurufen.

from datetime import datetime

now = datetime.now()
print("Aktuelles Datum und Uhrzeit:", now)

Dieser Code erzeugt eine Ausgabe wie diese.

Aktuelles Datum und Uhrzeit: 2025-02-01 12:34:56.789012

Dieses Format ist in der Form YYYY-MM-DD HH:MM:SS.ssssss und enthält Datum, Uhrzeit und Mikrosekunden.

3.2 Methode zum Abrufen des heutigen Datums

Wenn Sie nur das heutige Datum abrufen möchten, verwenden Sie date.today().

from datetime import date

today = date.today()
print("Heutiges Datum:", today)

Beispielausgabe:

Heutiges Datum: 2025-02-01

3.3 Unterschied zwischen now() und today()

MethodeFunktion
datetime.now()Aktuelles „Datum und Uhrzeit“ abrufen
date.today()Aktuelles „nur Datum“ abrufen

Je nach Anwendungsfall sollte man sie unterschiedlich verwenden.

4. Formatkonvertierung für Datum und Uhrzeit (String ⇔ datetime)

Beim Umgang mit Datum und Uhrzeit ist die Formatkonvertierung sehr wichtig. In Python können Sie mit strftime() und strptime() Datum und Uhrzeit mit Strings gegenseitig konvertieren.

4.1 Konvertierung eines datetime-Objekts in einen String (strftime)

Wenn Sie Datum und Uhrzeit in einen String mit einem bestimmten Format konvertieren möchten, verwenden Sie strftime().

from datetime import datetime

now = datetime.now()
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print("Formatierter Datumsstring:", formatted_date)

Ausgabe:

Formatierter Datumsstring: 2025-02-01 12:34:56

4.2 Konvertierung eines Strings in ein datetime-Objekt (strptime)

Um einen String in ein datetime zu konvertieren, verwenden Sie strptime().

from datetime import datetime

date_str = "2025-02-01 12:34:56"
dt = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print("Konvertiertes datetime-Objekt:", dt)

Ausgabe:

Konvertiertes datetime-Objekt: 2025-02-01 12:34:56

5. Methode zum Addieren und Subtrahieren von Daten in Python (Verwendung von timedelta)

Python kann durch die Verwendung der timedelta-Klasse das Addieren und Subtrahieren von Daten und Uhrzeiten einfach durchführen.

5.1 Grundlagen der timedelta-Klasse

from datetime import datetime, timedelta

# Aktuelles Datum und Uhrzeit abrufen
now = datetime.now()

# Datum in 7 Tagen abrufen
future_date = now + timedelta(days=7)
print("Datum in 7 Tagen:", future_date)

# Datum vor 3 Tagen abrufen
past_date = now - timedelta(days=3)
print("Datum vor 3 Tagen:", past_date)

5.2 Addition und Subtraktion in Zeiteinheiten

from datetime import datetime, timedelta

now = datetime.now()

# Uhrzeit in 1 Stunde
one_hour_later = now + timedelta(hours=1)
print("Uhrzeit in 1 Stunde:", one_hour_later)

# Uhrzeit vor 30 Minuten
thirty_minutes_ago = now - timedelta(minutes=30)
print("Uhrzeit vor 30 Minuten:", thirty_minutes_ago)

5.3 Die Differenz zwischen zwei Daten berechnen

from datetime import datetime

# Zwei Daten definieren
date1 = datetime(2025, 2, 10)
date2 = datetime(2025, 2, 1)

# Differenz berechnen
difference = date1 - date2
print("Differenz der Daten:", difference)
print("Tagesdifferenz:", difference.days, "Tage")

6. Umgang mit Datum und Zeit unter Berücksichtigung der Zeitzone (Unterschiede zwischen pytz und zoneinfo)

Beim Umgang mit Datum und Uhrzeit in Python ist es sehr wichtig, die Zeitzone zu berücksichtigen.

6.1 pytz verwendete Zeitzoneneinstellung

from datetime import datetime
import pytz

# Spezifikation der Zeitzone
japan_tz = pytz.timezone('Asia/Tokyo')

# Aktuelle UTC-Zeit abrufen
utc_now = datetime.utcnow()

# In JST (Japan Standard Time) konvertieren
jst_now = utc_now.replace(tzinfo=pytz.utc).astimezone(japan_tz)
print("Japanische Zeit (JST):", jst_now)

6.2 zoneinfo (Python 3.9 und höher) verwendete Zeitzoneneinstellung

from datetime import datetime
from zoneinfo import ZoneInfo

# Aktuelle Zeit in JST (Japan Standard Time) abrufen
jst_now = datetime.now(ZoneInfo("Asia/Tokyo"))
print("Aktuelle JST-Zeit:", jst_now)

Wenn Sie Python 3.9 oder höher verwenden, wird empfohlen, zoneinfo zu verwenden.

7. Fehler und deren Behebung

Beim Verwenden des Python-datetime-Moduls stoßen insbesondere Anfänger häufig auf bestimmte Fehler.

7.1 AttributeError: type object 'datetime.datetime' has no attribute 'timedelta'

from datetime import datetime

# Versuch, timedelta zu verwenden, führt zu einem Fehler
now = datetime.now()
new_date = now + datetime.timedelta(days=7)

Lösung:

from datetime import datetime, timedelta

now = datetime.now()
new_date = now + timedelta(days=7)
print(new_date)

7.2 TypeError: can't subtract offset-naive and offset-aware datetimes

from datetime import datetime
import pytz

dt_naive = datetime(2025, 2, 1, 12, 0)
dt_aware = datetime(2025, 2, 1, 12, 0, tzinfo=pytz.utc)

diff = dt_aware - dt_naive  # Fehler tritt auf

Lösung:

dt_aware = dt_naive.replace(tzinfo=pytz.utc)

8. Praktische Beispiele

8.1 Methode zur Generierung eines Datumsbereichs

from datetime import datetime, timedelta

start_date = datetime(2025, 2, 1)
end_date = datetime(2025, 2, 7)

date_list = [start_date + timedelta(days=i) for i in range((end_date - start_date).days + 1)]

for date in date_list:
    print(date.strftime("%Y-%m-%d"))

8.2 Datumsberechnung unter Berücksichtigung von Geschäftstagen (Wochentagen)

import pandas as pd

business_days = pd.bdate_range(start="2025-02-01", end="2025-02-10")

for day in business_days:
    print(day.date())

8.3 Konvertierung von UNIX-Timestamp

from datetime import datetime

timestamp = 1735689600
dt = datetime.fromtimestamp(timestamp)
print("Konvertierte datetime:", dt)

9. Häufig gestellte Fragen (FAQ)

9.1 Was ist der Unterschied zwischen datetime und time?

Aspektdatetimetime
ZweckVerarbeitung von Datum und UhrzeitMessung der UNIX-Zeit oder Sleep-Verarbeitung
Beispieldatetime(2025, 2, 1, 12, 0, 0)time.sleep(2)

9.2 Was ist der Unterschied zwischen strftime und strptime?

from datetime import datetime

# datetime zu String (strftime)
now = datetime(2025, 2, 1, 12, 0, 0)
formatted_str = now.strftime("%Y-%m-%d %H:%M:%S")
print("Umwandlung zu String:", formatted_str)

# String zu datetime (strptime)
date_str = "2025-02-01 12:00:00"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print("Umwandlung zu datetime:", parsed_date)

9.3 Wie konvertiert man einen UNIX-Timestamp zu datetime?

from datetime import datetime

timestamp = 1735689600
dt = datetime.fromtimestamp(timestamp)
print("Datetime nach der Konvertierung:", dt)

10. Zusammenfassung

10.1 Zusammenfassung der wichtigsten Punkte des Artikels

  • datetime-Modul ist eine Standardbibliothek in Python zur Handhabung von Datum und Uhrzeit.
  • datetime.now() zum Abrufen des aktuellen Datums und der Uhrzeit, date.today() zum Abrufen nur des aktuellen Datums.
  • strftime() zur Konvertierung von datetime zu einem String, strptime() zur Konvertierung eines Strings zu datetime.
  • timedelta(days=7) zur Berechnung des Datums eine Woche später.
  • Ab Python 3.9 zoneinfo, davor pytz verwenden.
  • datetime-Objekte können mit > < == verglichen werden.

10.2 Offizielle Dokumentation und Referenzquellen

10.3 Lassen Sie uns die praktische Handhabung von Zeit in Python ausprobieren

Entwicklung einer App zur TerminverwaltungAnalyse von Log-DatenBerechnung von Uhrzeiten in verschiedenen ZeitzonenImplementierung einer automatischen ErinnerungsfunktionVielen Dank, dass Sie bis zum Ende gelesen haben!

侍エンジニア塾