Python Datetime: praca z datami i godzinami

Dowiedz się, jak obsługiwać daty, godziny, strefy czasowe i obliczenia w Pythonie. Opanuj formatowanie, analizowanie i arytmetykę przy użyciu funkcji datetime i timedelta.

Spróbuj w Edytorze

Przegląd

Obsługa dat i godzin jest notorycznym wyzwaniem w tworzeniu oprogramowania ze względu na lata przestępne, zmiany czasu letniego i różne formaty stref czasowych. Python rozwiązuje te problemy dzięki wbudowanemu modułowi „datetime”. Moduł ten udostępnia solidny zestaw klas obiektów — takich jak „data”, „godzina”, „datagodzina” i „strefa czasowa” – które w przejrzysty sposób reprezentują dane tymczasowe i manipulują nimi, dzięki czemu obliczenia dat są proste.

Jednym z najczęstszych zadań jest konwertowanie dat na ciągi znaków (formatowanie) i ciągów znaków na daty (parsowanie). Python używa w tym celu dwóch głównych metod: `.strftime()` (format ciągu znaków czasu) konwertuje obiekt typu datetime na czytelny ciąg znaków przy użyciu kodów formatujących (takich jak `%Y` dla roku, `%m` dla miesiąca i `%d` dla dnia). I odwrotnie, funkcja `datetime.strptime()` (czas analizy łańcucha znaków) analizuje wejściowy surowy ciąg znaków w obiekcie typu datetime w oparciu o pasujący szablon formatu, co jest istotne podczas odczytywania dzienników lub danych wejściowych API.

Wykonywanie obliczeń dat jest również w pełni obsługiwane przy użyciu obiektu `timedelta`. „timedelta” oznacza czas (np. 7 dni, 4 godziny). Możesz dodać lub odjąć „timedelta” od „datetime”, aby obliczyć przeszłe lub przyszłe daty (np. określić datę wygaśnięcia). Podczas pracy z wieloma strefami czasowymi użycie obiektów uwzględniających strefę czasową (takich jak `zoneinfo` lub `timezone.utc`) ma kluczowe znaczenie, aby zapewnić dokładność porównań dat w różnych lokalizacjach serwerów.

Dane wyjściowe kodu i wykonania

Analizowanie ciągów znaków w obiektach datetime i obliczanie przyszłych terminów za pomocą timedelta.

datetime_demo.py
Spróbuj w Edytorze
from datetime import datetime, timedelta

# Define a specific fixed base date and time (for deterministic runs)
base_date = datetime(2026, 5, 25, 23, 45, 50)
print(f"Base Date/Time: {base_date}")

# Format datetime as string
formatted = base_date.strftime("%Y-%m-%d %H:%M:%S")
print(f"Formatted String: {formatted}")

# Parse string to datetime
date_str = "2026-12-25"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d")
print(f"Parsed Date: {parsed_date}")

# Date arithmetic with timedelta
ten_days_later = base_date + timedelta(days=10)
print(f"Date 10 days later: {ten_days_later.strftime('%Y-%m-%d')}")
Wyjście terminala
Base Date/Time: 2026-05-25 23:45:50
Formatted String: 2026-05-25 23:45:50
Parsed Date: 2026-12-25 00:00:00
Date 10 days later: 2026-06-04

Wdrażanie krok po kroku

  • Obliczanie daty wygaśnięcia wersji próbnej i dat rozliczeń
  • Analizowanie ciągów sygnatur czasowych w dziennikach dostępu do serwera
  • Planowanie automatycznych zadań cron lub raportów cyklicznych

Często zadawane pytania

Co to jest naiwny i świadomy obiekt datetime?

Naiwny obiekt datetime nie zawiera informacji o strefie czasowej, natomiast świadomy obiekt datetime zawiera przesunięcia stref czasowych, dzięki czemu jest bezpieczny dla obliczeń czasu międzynarodowego.

Jak obliczyć różnicę między dwiema datami?

Odejmowanie jednego obiektu datetime od innego zwraca obiekt timedelta reprezentujący dokładny czas trwania między nimi.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.