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 klasytimezone
lubzoneinfo
.
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 klasatime
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 obiektdatetime
.
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.