Manipulacja datami w Pythonie

Manipulacja datami w Pythonie

Ten artykuł wyjaśnia manipulację datami w Pythonie.

YouTube Video

Manipulacja datami w Pythonie

Manipulacja datami w Pythonie korzysta głównie z modułu datetime. Moduł ten oferuje różne klasy i funkcje do manipulacji datami i czasami.

Poniżej znajdują się przykłady podstawowej manipulacji datami z użyciem modułu datetime.

Pobieranie daty i czasu

Możesz uzyskać bieżącą datę i godzinę w następujący sposób. datetime.now() i datetime.today() zwracają prawie ten sam wynik, ale mogą się różnić w sposobie obsługi stref czasowych.

1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
  • Ten kod pobiera i wyświetla bieżącą datę i godzinę oraz tylko dzisiejszą datę.

Tworzenie konkretnych dat i czasów

Możesz utworzyć konkretną datę i godzinę w następujący sposób.

1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
  • Ten kod tworzy i wyświetla określoną datę i godzinę (7 listopada 2023, 10:30:45).

Formatowanie dat

Formatowanie daty można wykonać w następujący sposób.

1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
  • Ten kod pobiera bieżącą datę i godzinę, formatuje ją do określonego formatu za pomocą strftime i wyświetla.

Ciągi formatujące datę

  • %Y: Rok (4 cyfry)
  • %m: Miesiąc (01 do 12)
  • %d: Dzień (01 do 31)
  • %H: Godzina (00 do 23)
  • %M: Minuta (00 do 59)
  • %S: Sekunda (00 do 59)

Analiza łańcuchów daty

Możesz przekonwertować łańcuch znaków reprezentujący datę na obiekt datetime.

1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
  • Ten kod konwertuje datę w postaci łańcucha znaków na obiekt datetime za pomocą strptime() i wyświetla ją.

Arytmetyka dat

Arytmetykę na datach można wykonać w następujący sposób.

 1from datetime import datetime, timedelta
 2
 3now = datetime.now()
 4
 5# Date for one day later
 6tomorrow = now + timedelta(days=1)
 7print(f"Date for one day later: {tomorrow}")
 8
 9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
  • Ten kod używa timedelta, aby dodać lub odjąć dni i godziny od bieżącej daty i godziny, obliczając i wyświetlając datę i godzinę dla jutra, tydzień temu i za dwie godziny.

Obsługa stref czasowych

Możesz również obsługiwać strefy czasowe za pomocą modułu datetime.

 1from datetime import datetime, timezone, timedelta
 2
 3# Current UTC time
 4utc_now = datetime.now(timezone.utc)
 5print(f"Current UTC time: {utc_now}")
 6
 7# JST (UTC+9)
 8jst = timezone(timedelta(hours=9))
 9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
  • datetime domyślnie zwraca 'naiwną datę i godzinę' (bez informacji o strefie czasowej). Możesz jawnie obsługiwać strefy czasowe, używając klasy timezone lub zoneinfo.

Klasa date i klasa time

Za pomocą modułu datetime możesz również obsługiwać tylko daty lub tylko godziny.

1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
  • Klasa date obsługuje tylko daty, a klasa time tylko godziny.

Konwersja między datetime a timestamp

Możliwa jest konwersja między znacznikami czasu UNIX a obiektami datetime. Tutaj znacznik czasu UNIX odnosi się do liczby sekund, które upłynęły od 1 stycznia 1970 roku.

 1from datetime import datetime
 2
 3now = datetime.now()
 4
 5# datetime → timestamp
 6timestamp = now.timestamp()
 7print(f"Timestamp: {timestamp}")
 8
 9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
  • Ten kod konwertuje bieżącą datę i godzinę na znacznik czasu UNIX, a następnie używa funkcji fromtimestamp(), aby przekształcić ten znacznik czasu z powrotem na obiekt datetime.

Typowe pułapki

Korzystając z modułu datetime, należy pamiętać o następujących kwestiach.

  • datetime.now() nie uwzględnia stref czasowych, więc dla internacjonalizacji musisz jawnie użyć timezone.utc.
  • Uważaj, aby nie pomylić %m (miesiąc) i %M (minuta) w ciągach formatujących.

Podsumowanie

Moduł datetime oferuje również wiele innych funkcji do elastycznej manipulacji datami i czasami. Dodatkowo dostępne są klasy takie jak date, time, i timedelta, które są specjalizowane dla konkretnych operacji.

Korzystanie z innych bibliotek pozwala również na bardziej zaawansowaną manipulację datami. Na przykład, pandas specjalizuje się w pracy z danymi czasowymi, podczas gdy dateutil nadaje się do złożonego parsowania dat. Również biblioteka arrow jest bardzo przydatna.

Możesz śledzić ten artykuł, korzystając z Visual Studio Code na naszym kanale YouTube. Proszę również sprawdzić nasz kanał YouTube.

YouTube Video