datetime

Daty i godziny: tworzenie, formatowanie, odczyt z tekstu i obliczenia na odstępach czasu.

Na tej stronie

Przykład

#
Python
from datetime import datetime, timedelta

start = datetime(2026, 9, 28, 10, 30)
deadline = start + timedelta(days=7)

print(start)
print(deadline.strftime("%d.%m.%Y, godz. %H:%M"))
print((deadline - start).days)
print(deadline > start)
Wynikzapisany wynik, możesz go sprawdzić
2026-09-28 10:30:00
05.10.2026, godz. 10:30
7
True

Definicja i zastosowanie

#

Moduł datetime zawiera klasy do opisu czasu: date (sama data), time (sama godzina), datetime (data z godziną) i timedelta (odstęp czasu, na przykład 7 dni albo 90 minut). Najczęściej importuje się je bezpośrednio: from datetime import datetime, timedelta.

Metoda strftime() zamienia datę na tekst według wzorca, np. %d.%m.%Y daje „28.09.2026”, a datetime.strptime() działa odwrotnie i odczytuje datę z tekstu. Dla standardowego formatu ISO (2026-09-28T10:30:00) są prostsze metody isoformat() i fromisoformat().

Daty porównuje się zwykłymi operatorami < i >, a dodanie timedelta przesuwa datę w przód lub w tył. Odjęcie dwóch dat daje timedelta, z której odczytasz na przykład liczbę dni. Bieżący moment zwraca datetime.now(), a do pracy ze strefami czasowymi służy moduł zoneinfo.

Składnia

#
Składnia
from datetime import date, datetime, timedelta

datetime(year, month, day, hour=0, minute=0, second=0)
datetime.now()
moment.strftime(format)
datetime.strptime(tekst, format)
timedelta(days=0, hours=0, minutes=0)

Parametry

#
  • year

    int

    Rok, np. 2026.
  • month

    int 1–12

    Miesiąc.
  • day

    int

    Dzień miesiąca. Nieistniejąca data, np. 31 kwietnia, zgłasza ValueError.
  • hour, minute, second

    int, domyślnie 0

    Godzina, minuta i sekunda.
  • tzinfo

    strefa czasowa, opcjonalna

    Np. timezone.utc albo ZoneInfo("Europe/Warsaw"). Bez niej data nie ma przypisanej strefy.

Więcej przykładów

#
Odczyt daty z tekstu
Python
from datetime import date, datetime

exam = datetime.strptime("15.10.2026 18:00", "%d.%m.%Y %H:%M")
print(exam)
print(exam.isoformat())

birthday = date.fromisoformat("2012-05-03")
print(birthday.year, birthday.weekday())
Wynikzapisany wynik, możesz go sprawdzić
2026-10-15 18:00:00
2026-10-15T18:00:00
2012 3

weekday() numeruje dni od poniedziałku (0) do niedzieli (6), więc 3 oznacza czwartek.

Ile dni do egzaminu?
Python
from datetime import date, datetime

exam = date(2026, 12, 15)
days_left = (exam - date.today()).days

print(f"Do egzaminu zostało {days_left} dni")
print(datetime.now().strftime("%H:%M"))
Wynik
Kliknij Uruchom, żeby zobaczyć wynik.

Wynik zależy od chwili uruchomienia. 28 września 2026 roku pierwsza linia to „Do egzaminu zostało 78 dni”, a druga pokaże bieżącą godzinę.

Dobre praktyki

#
  • Nie rozbieraj dat ręcznie przez split(). strptime() i fromisoformat() od razu sprawdzą, czy data jest poprawna.
  • W f-stringach możesz formatować daty bezpośrednio: f"{deadline:%d.%m.%Y}".
  • Do zapisu w JSON i bazach danych używaj formatu ISO, a czas użytkowników z różnych krajów przechowuj w UTC: datetime.now(timezone.utc).

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.