Moduł datetime w Pythonie przyda się prędzej niż później. Dlatego warto zapoznać się z tym modułem prędzej. Dzięki niemu odczytujemy daty i czas. Spotkacie użycia datetime nawet w małym skrypcie, jak i większym projekcie.
Moduł w pythonie czy w innych językach spotkacie się z określeniem bibliteka, albo pakiet – innymi słowy dodatkowy zasób, którym można rozszerzyć podstawowe działanie naszego kodu. Tutaj datetime jest w Pythona wbudowany i nic dodatkowo nie potrzebujemy poza jego zaimportowaniem. Dajemy znać, dla naszego pliku Pythonowego, że będziemy potrzebować dodatkowe funkcjonalności.
PS: jeśli dopiero uczysz się Pythona z mojego kursu, to potraktuj tę lekcję jako „side quest”. Ciekawostkę, ale jeśli lekcja jest za trudna odłóż ją i tyle – wrócisz, gdy będziesz jej potrzebować.
Do czego przydaje się moduł datetime? Na przykład:
- sprawdzimy aktualną datę i godzinę,
- utworzymy zmienne na własne daty i godziny,
- policzymy różnicę między dwiema datami (np. ile dni zostało nam do urlopu),
- sformatujemy daty do czytelnych napisów,
- wczytamy datę z tekstu (np. „2025-07-30”) do formatu daty,
- strefy czasowe – porównamy daty dla różnych stref czasowych
Krok 1 czyli import modułu datetime
Zaczynamy od importu. Możemy wczytać cały moduł:
import datetime
lub konkretne jego elementy:
from datetime import date, datetime, time, timedelta
Obie metody są poprawne. Pierwsza daje nam dostęp do wszystkiego przez datetime.nazwa. Gdzie nazwa to konkretna metoda, której chcemy użyć i należy do modułu.
import datetime print(datetime.datetime.now()) print(datetime.date.today())
W drugim przypadku zapis jest krótszy, ale trzeba pamiętać, co dokładnie importowaliśmy:
from datetime import datetime, date print(datetime.now()) print(date.today())
Aktualna data i czas
Podstawowa sprawa i wasze najczęstrze pytanie czyli jak sprawdzić w Pythonie czas teraz aka pobranie bieżącej daty i godziny.
import datetime now = datetime.datetime.now() print(now)
Przykładowy wynik:
2022-09-07 14:26:49.219717
Obiekt zwrócony przez now() ma w sobie rok, miesiąc, dzień, godzinę, minuty, sekundy i mikrosekundy. Co znaczy, że do każdego z tych elementów możemy się dostać!

Tylko data bez godziny
Jeśli interesuje nas wyłącznie data – możemy wycinać z datetime.datetime.now(), ale wygodniej będzie skorzystać z datetime.date.today().
import datetime dzisiaj = datetime.date.today() print(dzisiaj)
Wynik:
2025-07-30
Zwrćcie uwagę, że korzystamy już nie z obiektu datetime.datetime a datetime.date – jest różnica 😉
Co siedzi w module datetime?
Ciekawi Was co tak naprawdę jest zawarte wewnątrz datetime. Możemy podejrzeć wszystkie elementy modułu:
import datetime print(dir(datetime))
Ale tak naprawdę najczęściej używane:
datetime.datetime– data i czas,datetime.date– tylko data,datetime.time– tylko czas,datetime.timedelta– różnice między datami,datetime.timezone– strefy czasowe.
Tworzenie własnych dat
Co jeśli chcemy z danych posiadanych tj. np. zwykłych tekstów utworzyć datę – rozumianą przez Pythona jako data.
Możemy stworzyć datę z poprostu podanych liczb
np. utworzę urodziny mojej Figi 🐶
import datetime figa_birthday = datetime.date(2019, 08, 01) print(figa_birthday)
Wynik:
2019-08-01
Data z timestampu?
Jeżeli mamy timestamp (czyli liczbę sekund od 1 stycznia 1970) możemy znaleźć konkretną datę za pomocą metody fromtimestamp()
from datetime import date ts = 667036800 data = date.fromtimestamp(ts) print(data)
1991-02-20 # 20 luty 1991
Ciekawostka: Pierwsza oficjalna wersja języka Python, oznaczona jako 0.9.0, została wydana 20 lutego 1991 roku!
Wyciągamy rok, miesiąc i dzień
Każdy obiekt daty ma atrybuty roku, miesiąca i dnia czyli year, month i day:
from datetime import date
dzisiaj = date.today()
print("Rok:", dzisiaj.year)
print("Miesiąc:", dzisiaj.month)
print("Dzień:", dzisiaj.day)
Czas czas czas…
Obiekt time przechowuje godzinę hour, minuty minute, sekundy second (i mikrosekundy) i tak też możemy informacje wyciągać
from datetime import time t1 = time() t2 = time(11, 34, 56) t3 = time(11, 34, 56, 500000) print(t1) print(t2) print(t3)
Możemy odczytać atrybuty:
print("Godzina:", t2.hour)
print("Minuty:", t2.minute)
print("Sekundy:", t2.second)
Data i czas razem (datetime)
Klasa datetime łączy datę i czas:
from datetime import datetime dt1 = datetime(2022, 7, 30) dt2 = datetime(2022, 7, 30, 15, 45, 30) print(dt1) print(dt2)
Różnice czasu (timedelta)
Obiekt timedelta pozwala na obliczenia na datach
from datetime import date, timedelta data1 = date(2022, 8, 5) data2 = date(2022, 7, 30) roznica = data1 - data2 print(roznica)
Dodawanie dni:
nowa_data = data2 + timedelta(days=10) print(nowa_data)
Formatowanie dat (strftime)
Możemy sformatować datę do czytelnego napisu, jeśl ito co mamy jest dla nas mało czytelne 😉
Przydatne kody:
%Y– rok%m– miesiąc%d– dzień%H– godzina%M– minuta%S– sekunda
from datetime import datetime
teraz = datetime.now()
print(teraz.strftime("%Y-%m-%d %H:%M:%S"))
print(teraz.strftime("%d/%m/%Y"))
print(teraz.strftime("%A, %d %B %Y"))
…kod %A w strftime() zwraca pełną nazwę dnia tygodnia (np. Monday, Tuesday), a kod %B zwraca pełną nazwę miesiąca (np. January, February).
Są też skrócone wersje:
%a– skrócona nazwa dnia tygodnia (np. Mon, Tue)%b– skrócona nazwa miesiąca (np. Jan, Feb)
Podsumowując poniżej tabela z popularnymi kodami i ich znaczeniem:
| Kod | Znaczenie | Przykład |
|---|---|---|
%Y |
Rok (pełny, cztery cyfry) | 2025 |
%y |
Rok (ostatnie dwie cyfry) | 25 |
%m |
Miesiąc (liczba, 01–12) | 07 |
%B |
Pełna nazwa miesiąca | July |
%b |
Skrócona nazwa miesiąca | Jul |
%d |
Dzień miesiąca (01–31) | 30 |
%A |
Pełna nazwa dnia tygodnia | Wednesday |
%a |
Skrócona nazwa dnia tygodnia | Wed |
%H |
Godzina (24h) | 14 |
%I |
Godzina (12h) | 02 |
%M |
Minuta | 05 |
%S |
Sekunda | 09 |
%p |
AM/PM | PM |
Mała uwaga:
Jeżeli chcemy, aby strftime() zwracało nam polskie nazwy dni tygodnia i miesięcy, musimy ustawić odpowiednią lokalizację:
import locale
from datetime import datetime
locale.setlocale(locale.LC_TIME, "pl_PL.UTF-8")
# na Windows czasem trzeba użyć:
# locale.setlocale(locale.LC_TIME, "Polish_Poland")
teraz = datetime.now()
print(teraz.strftime("%A, %d %B %Y"))
# przykładowy wynik: środa, 30 lipca 2025
Parsowanie tekstu na datę (strptime)
Zamieniamy tekst na obiekt daty:
from datetime import datetime tekst = "25-12-2025" data = datetime.strptime(tekst, "%d-%m-%Y") print(data)

Starsi niż Google?
Ciekawostka: Google powstało 4 września 1998 roku.
Zróbmy, więc z tego obiekt daty date(YYYY, MM, DD)
from datetime import date
google_start = date(1998, 9, 4)
print("Google powstało:", google_start)
Czy jesteś starszy niż Google?
Mały żarcik (tak, ja jestem starsza niż Google), ale i dobry przykład porównywania dat. Sprawdzimy to prostym warunkiem:
from datetime import datetime, date
google_start = date(1998, 9, 4)
birthdate_str = input("Podaj swoją datę urodzenia (RRRR-MM-DD): ")
birthdate = datetime.strptime(birthdate_str, "%Y-%m-%d").date()
if birthdate < google_start:
print("Jesteś starszy niż Google!")
else:
print("Google jest starsze niż Ty.")
Tak po prostu birthdate < google_start - nic więcej nie potrzeba, w przykładzie powyżej zadziała porównanie dat. Python od razu sprawdza, która z nich jest wcześniejsza.
Strefy czasowe (pytz)
W Pythonie mamy też warty uwagi moduł pytz, dzięki czemu możemy pracować ze strefami czasowymi:
from datetime import datetime
import pytz
warszawa = pytz.timezone('Europe/Warsaw')
ny = pytz.timezone('America/New_York')
czas_wawa = datetime.now(warszawa)
czas_ny = datetime.now(ny)
print("Warszawa:", czas_wawa)
print("Nowy Jork:", czas_ny)
datetime jest modułem, który jak widać rozwiązuje mnóstwo codziennych problemów z datami i godzinami. I tak wszyscy je mamy oraz - nie programiści tego na pamięć nie umieją 😉 Wiem, że wydaje się, że dzisiejsza lekcja to naprawdę dużo, ale im więcej będziemy z nim pracować, tym szybciej te operacje staną się odruchowe.
ZADANIA
Zadanie 1 – ile dni do końca roku
Napisz program, który pobierze dzisiejszą datę i policzy, ile dni zostało do końca bieżącego roku.
Zadanie 2 – kiedy wypada najbliższy weekend
Napisz program, który sprawdzi, w ile dni od dzisiaj wypada najbliższa sobota.
Podaj datę najbliższego weekendu.
Zadanie 3 – ile dni do ważnej daty
Napisz program, który zapyta użytkownika o ważną datę (format RRRR-MM-DD).
Policz, ile dni zostało do tej daty od dnia dzisiejszego.
Jeśli data już minęła, poinformuj użytkownika o ile dni jest „po czasie”.
Zadanie 4 – starszy niż Python czy iPhone?
Python w wersji 1.0 pojawił się 20 lutego 1991 roku, a pierwszy iPhone trafił do sprzedaży 29 czerwca 2007 roku.
Poproś użytkownika o datę urodzenia i sprawdź:
– czy jest starszy niż Python,
– czy jest starszy niż iPhone.
Wyświetl odpowiednie komunikaty dla obu porównań.
Zadanie 5 – weekend checker
Napisz program, który zapyta użytkownika o dowolną datę i sprawdzi, czy wypada ona w weekend (sobota lub niedziela).
Jeżeli tak – wyświetl komunikat „To weekend!”, w przeciwnym razie podaj, ile dni zostało do najbliższego weekendu.
Zadanie 6 – polskie święta
Użyj modułu holidays dla Polski.
Poproś użytkownika o datę i sprawdź, czy tego dnia jest święto ustawowo wolne od pracy.
Jeżeli tak – wyświetl nazwę święta.
Jeżeli nie – poinformuj, że to zwykły dzień roboczy.
Zachęcam do dzielnia się uwagami, pytaniami, problemami w komentarzach pod postem 😉
Ten wpis jest częścią cyklu Python kurs od podstaw:

komentarze: 0