9.1 Praca z datą i czasem
Programistom bardzo często zdarza się w swoich programach pracować z datami i czasem. Dlatego nie ma nic dziwnego w tym, że w Pythonie na te okazje są dwie standardowe biblioteki datetime
i time
.
Biblioteka datetime
jest częścią standardowej biblioteki Pythona i zapewnia klasy do pracy z datami i czasem. Pozwala tworzyć, manipulować i formatować daty i czas, a także wykonywać operacje arytmetyczne na nich.
Główne klasy biblioteki datetime
Klasa datetime.date
Ta klasa reprezentuje datę (rok, miesiąc, dzień) bez czasu. Jest użyteczna do pracy z kalendarzowymi datami.
Przykład użycia:
import datetime
# Tworzenie obiektu daty
d = datetime.date(2023, 5, 24)
print(d) # Wyjście: 2023-05-24
# Pobieranie obecnej daty
today = datetime.date.today()
print(today)
# Dostęp do atrybutów roku, miesiąca i dnia
print(d.year) # Wyjście: 2023
print(d.month) # Wyjście: 5
print(d.day) # Wyjście: 24
Klasa datetime.time
Ta klasa reprezentuje czas (godziny, minuty, sekundy, mikrosekundy) bez daty. Jest użyteczna do pracy z czasem w ciągu dnia.
Przykład użycia:
import datetime
# Tworzenie obiektu czasu
t = datetime.time(14, 30, 45)
print(t) # Wyjście: 14:30:45
# Dostęp do atrybutów godzin, minut i sekund
print(t.hour) # Wyjście: 14
print(t.minute) # Wyjście: 30
print(t.second) # Wyjście: 45
Klasa datetime.datetime
Ta klasa łączy datę i czas (rok, miesiąc, dzień, godziny, minuty, sekundy, mikrosekundy). Jest użyteczna do pracy z konkretnymi momentami w czasie.
Przykład użycia:
import datetime
# Tworzenie obiektu daty i czasu
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
print(dt) # Wyjście: 2023-05-24 14:30:45
# Pobieranie obecnej daty i czasu
now = datetime.datetime.now()
print(now)
# Dostęp do atrybutów daty i czasu
print(dt.year) # Wyjście: 2023
print(dt.month) # Wyjście: 5
print(dt.day) # Wyjście: 24
print(dt.hour) # Wyjście: 14
print(dt.minute) # Wyjście: 30
print(dt.second) # Wyjście: 45
Klasa datetime.timedelta
Ta klasa reprezentuje różnicę między dwoma momentami w czasie, wyrażoną w dniach, sekundach i mikrosekundach. Jest użyteczna do wykonywania operacji arytmetycznych na datach i czasie.
Przykład użycia:
import datetime
# Tworzenie obiektu timedelta
delta = datetime.timedelta(days=10, hours=5, minutes=30)
print(delta) # Wyjście: 10 days, 5:30:00
# Dodawanie timedelta do daty
dt = datetime.datetime(2023, 5, 24, 14, 30)
new_dt = dt + delta
print(new_dt) # Wyjście: 2023-06-03 20:00:00
# Odejmowanie timedelta od daty
earlier_dt = dt - delta
print(earlier_dt) # Wyjście: 2023-05-14 09:00:00
4.2 Formatowanie i parsowanie dat i czasu
Często musimy nie tylko pracować z datą, ale także przekształcać ją w string o określonym formacie. Odwrotny proces, kiedy przekształcamy string w obiekt, zazwyczaj nazywamy parsowaniem. Dla tych operacji w Pythonie także są odpowiednie klasy i metody:
Metoda strftime()
Metoda strftime()
służy do formatowania obiektów datetime
na string zgodnie z zadanym formatem.
Przykład użycia:
import datetime
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
# Formatowanie daty i czasu
formatted_dt = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_dt) # Wyjście: 2023-05-24 14:30:45
# Formatowanie tylko daty
formatted_date = dt.strftime("%d-%m-%Y")
print(formatted_date) # Wyjście: 24-05-2023
# Formatowanie tylko czasu
formatted_time = dt.strftime("%H:%M:%S")
print(formatted_time) # Wyjście: 14:30:45
Metoda strptime()
Metoda strptime()
służy do parsowania stringów na obiekty datetime
zgodnie z zadanym formatem.
Przykład użycia:
import datetime
# Parsowanie stringa na obiekt datetime
date_str = "24-05-2023 14:30:45"
dt = datetime.datetime.strptime(date_str, "%d-%m-%Y %H:%M:%S")
print(dt) # Wyjście: 2023-05-24 14:30:45
# Parsowanie stringa na obiekt date
date_str = "24-05-2023"
d = datetime.datetime.strptime(date_str, "%d-%m-%Y").date()
print(d) # Wyjście: 2023-05-24
# Parsowanie stringa na obiekt time
time_str = "14:30:45"
t = datetime.datetime.strptime(time_str, "%H:%M:%S").time()
print(t) # Wyjście: 14:30:45
4.3 Praca ze strefami czasowymi
Jak pokazuje praktyka, z naszych usług korzystają ludzie z całego świata, a niestety, żyją oni w różnych krajach i mają różne strefy czasowe (timezone
). Dlatego ty jako programista musisz umieć pracować również z nimi.
No i oczywiście w Pythonie jest klasa na tę okazję:
Klasa timezone
Klasa timezone
z modułu datetime
pozwala na pracę ze strefami czasowymi.
import datetime
# Tworzenie obiektu datetime ze strefą czasową UTC
utc_dt = datetime.datetime(2023, 5, 24, 14, 30, 45, tzinfo=datetime.timezone.utc)
print(utc_dt) # Wyjście: 2023-05-24 14:30:45+00:00
# Konwersja do innej strefy czasowej
tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
tokyo_dt = utc_dt.astimezone(tokyo_tz)
print(tokyo_dt) # Wyjście: 2023-05-24 23:30:45+09:00
Przeszliśmy przez bibliotekę datetime
bardzo ogólnie, powiedziałbym wręcz powierzchownie. W przyszłości jeszcze raz do niej wrócimy i będziemy uczyć się jej używać do bardziej konkretnych zadań. Na razie chciałem po prostu was z nią zapoznać i poszerzyć, że tak powiem, wasze spojrzenie na zestaw standardowych bibliotek.
O każdej bibliotece powinniście przede wszystkim wiedzieć, że istnieje, i wyobrażać sobie, co można z jej pomocą zrobić. A listę funkcji, ich parametrów i wszystkie możliwości zawsze można zaczerpnąć z oficjalnej dokumentacji.
GO TO FULL VERSION