Jak obsługiwać daty i godziny w Pythonie za pomocą datetime
Obsługa dat i godzin jest powszechnym zadaniem w programowaniu, a Python udostępnia wbudowany moduł o nazwie datetime do pracy z datami i godzinami. Ten moduł udostępnia klasy do manipulowania datami, godzinami i przedziałami czasu, ułatwiając wykonywanie arytmetyki dat, formatowanie dat i zarządzanie strefami czasowymi. W tym artykule przyjrzymy się, jak używać modułu datetime do efektywnej obsługi dat i godzin w Pythonie.
Pierwsze kroki z datetime
Moduł datetime udostępnia kilka klas, takich jak datetime.date, datetime.time, datetime.datetime, datetime.timedelta i datetime.tzinfo. Klasy te umożliwiają pracę z datami, godzinami i przedziałami czasu.
Aby zacząć używać modułu datetime, należy go zaimportować:
import datetimePraca z datami
Możesz utworzyć obiekt daty za pomocą klasy date. Wymaga ona trzech parametrów: rok, miesiąc i dzień.
from datetime import date
# Create a date object
my_date = date(2023, 9, 4)
print(my_date) # Output: 2023-09-04Można również uzyskać dostęp do poszczególnych składników daty, takich jak rok, miesiąc i dzień:
print(my_date.year) # Output: 2023
print(my_date.month) # Output: 9
print(my_date.day) # Output: 4Praca z czasem
Klasa time umożliwia utworzenie obiektu czasu. Wymaga godzin, minut, sekund i mikrosekund (opcjonalnie).
from datetime import time
# Create a time object
my_time = time(14, 30, 45)
print(my_time) # Output: 14:30:45Podobnie jak w przypadku dat, można uzyskać dostęp do poszczególnych komponentów obiektu czasu:
print(my_time.hour) # Output: 14
print(my_time.minute) # Output: 30
print(my_time.second) # Output: 45Łączenie daty i godziny za pomocą datetime
Klasa datetime łączy datę i czas w jednym obiekcie. Możesz utworzyć obiekt datetime, przekazując rok, miesiąc, dzień, godzinę, minutę, sekundę i mikrosekundę (opcjonalnie).
from datetime import datetime
# Create a datetime object
my_datetime = datetime(2023, 9, 4, 14, 30, 45)
print(my_datetime) # Output: 2023-09-04 14:30:45Można uzyskać dostęp do komponentów daty i godziny obiektu datetime:
print(my_datetime.date()) # Output: 2023-09-04
print(my_datetime.time()) # Output: 14:30:45Pobieranie aktualnej daty i godziny
Moduł datetime udostępnia wygodne metody pobierania bieżącej daty, godziny lub obu tych wartości:
# Current date
today = date.today()
print(today) # Output: (current date)
# Current date and time
now = datetime.now()
print(now) # Output: (current date and time)Arytmetyka daty z timedelta
Klasa timedelta reprezentuje czas trwania, który jest różnicą między dwiema datami lub godzinami. Umożliwia wykonywanie arytmetyki dat, takiej jak dodawanie lub odejmowanie dni od daty.
from datetime import timedelta
# Create a timedelta object
delta = timedelta(days=7)
# Add 7 days to the current date
future_date = today + delta
print(future_date)Można również obliczyć różnicę między dwiema datami:
# Calculate the difference between two dates
date1 = date(2023, 9, 4)
date2 = date(2023, 9, 11)
difference = date2 - date1
print(difference.days) # Output: 7Formatowanie dat i godzin
Metoda strftime() umożliwia formatowanie daty lub godziny do ciągu znaków. Ta metoda przyjmuje kod formatu, aby określić żądany format:
# Format a date object
formatted_date = today.strftime('%B %d, %Y')
print(formatted_date) # Output: September 04, 2023Do powszechnie stosowanych formatów kodów należą:
%Y- Rok (np. 2023)%m– Miesiąc jako liczba dziesiętna uzupełniona zerami (np. 09)%d– Dzień miesiąca w postaci liczby dziesiętnej uzupełnionej zerami (np. 04)%H– Godzina (zegar 24-godzinny) jako liczba dziesiętna uzupełniona zerami (np. 14)%M– Minuta jako liczba dziesiętna uzupełniona zerami (np. 30)%S– Sekunda jako liczba dziesiętna uzupełniona zerami (np. 45)
Analiza dat z ciągów znaków
Metoda strptime() umożliwia konwersję ciągu znaków na obiekt datetime, biorąc pod uwagę format ciągu znaków daty:
# Parse a date from a string
date_str = '2023-09-04'
parsed_date = datetime.strptime(date_str, '%Y-%m-%d')
print(parsed_date)Praca ze strefami czasowymi
Moduł datetime obsługuje obiekty datetime uwzględniające strefy czasowe, używając biblioteki pytz. Aby pracować ze strefami czasowymi, musisz zainstalować pytz:
pip install pytzNastępnie możesz przypisać strefę czasową do obiektu datetime:
from datetime import datetime
import pytz
# Set timezone to UTC
utc_zone = pytz.utc
now_utc = datetime.now(utc_zone)
print(now_utc)Wniosek
Moduł datetime w Pythonie udostępnia potężne narzędzia do obsługi dat i godzin, w tym tworzenie, formatowanie, parsowanie i wykonywanie działań arytmetycznych na obiektach daty i godziny. Niezależnie od tego, czy musisz manipulować datami, pracować ze strefami czasowymi, czy formatować daty i godziny do wyświetlania, moduł datetime ma wszystko, czego potrzebujesz.