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 datetime

Praca 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-04

Moż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: 4

Praca 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:45

Podobnie 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:45

Moż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:45

Pobieranie 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: 7

Formatowanie 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, 2023

Do 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 pytz

Nastę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.