Jak przekonwertować ciąg znaków na datę i godzinę w Pythonie
Opublikowany: 2022-12-20Konwersja z jednego typu danych na inny rodzaj danych ma kluczowe znaczenie w każdym języku programowania. Prawie wszystkie języki programowania obsługują konwersje typów dla wbudowanych typów danych.
Niestandardowe typy danych, takie jak datetime, wymagają dodatkowych modułów do konwersji. Potrzebujemy modułów, zwłaszcza do konwersji datetime
i godziny, ponieważ praca z nimi nigdy nie była łatwa dla programistów. Na szczęście python ma wbudowane moduły do pracy z datetime.
Nauczymy się konwertować łańcuch typu datetime
na obiekt datetime
w Pythonie przy użyciu różnych modułów. Zanim przejdziemy do tego, zobaczmy, dlaczego musimy to przekonwertować w pierwszej kolejności.
Dlaczego musimy przekonwertować ciąg datetime na obiekt datetime?
Kiedy musimy pracować z datami, nie jest łatwo pracować, jeśli są one w formacie łańcuchowym. Konwersja ich do formatu datetime bardzo ułatwia pracę z nimi. Daty w łańcuchach są jak normalne łańcuchy. Nie będzie miał żadnych specjalnych metod pracy z datami. Będzie miał ogólne metody łańcuchowe, których nie będziemy potrzebować podczas pracy z datami.
Powiedzmy, że musimy porównać dwie daty. Jeśli są w formacie łańcuchowym, możemy je poprawnie porównać. Jeśli są w formacie daty i datetime
, możemy użyć operatorów porównania, takich jak liczby.
To tylko jeden scenariusz, w którym konwersja do formatu datetime
ułatwia sprawę. Istnieje wiele scenariuszy, takich jak dodawanie dat, odejmowanie, obsługa stref czasowych itp., w których konwersja ciągu datetime
na obiekt datetime
sprawia, że nasze życie jest łatwiejsze niż kiedykolwiek.
Powiedziawszy to, zobaczmy różne sposoby konwersji ciągu datetime
na obiekt datetime
. Będziemy używać wbudowanych modułów datetime
i zewnętrznych modułów dateutil
do konwersji ciągu datetime
na obiekt datetime
. Zacznijmy od modułu datetime
Korzystanie z daty i godziny
datetime
to wbudowany moduł Pythona, który służy do pracy z datami i godzinami. W tym module jest wiele klas, które pomagają nam pracować z datami i godzinami. Do konwersji użyjemy klasy datetime.datetime
.
datetime.datetime
ma wiele metod. Interesuje nas metoda strptime
, która pomoże nam w konwersji. Sprawdźmy to.
datetime.strptime
Metoda datetime.strptime
służy do konwersji ciągu datetime
na obiekt datetime
. Zajmuje dwa ciągi, jeden to ciąg datetime
, a drugi to format tego ciągu datetime
. I zwraca obiekt datetime
.
Zobaczmy przykład
from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))
Jeśli uruchomisz powyższy kod, zobaczysz następujące dane wyjściowe.
2022-12-19 21:37:56
Wzięliśmy ciąg datetime
i przekonwertowaliśmy go na obiekt datetime
za pomocą metody datetime.strptime
. Upewnij się, że format, który podajesz metodzie, dokładnie odpowiada ciągowi datetime
. Jeśli nie pasują, może pojawić się błąd lub nieprawidłowe dane wyjściowe.
Użyliśmy niektórych kodów formatujących dla formatu datetime
. Możesz odnieść się do wszystkich kodów formatów w dokumentacji.
Metoda datetime.strptime
zwraca pełne datetime
. Jeśli chcesz uzyskać datę i godzinę osobno, możemy użyć metod date time
obiektu datetime
. Zobaczmy kod.
from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" ## getting date separately print("Date:", datetime.strptime(string, formatting).date()) ## getting time separately print("Time:", datetime.strptime(string, formatting).time())
Uruchom powyższy kod, a zobaczysz następujące dane wyjściowe.
Date: 2022-12-19 Time: 21:37:56
Metody date
i time
zwrócą odpowiednio swoje obiekty. Znów będą mieli swoje odpowiednie metody dla dat i godzin.
Podaliśmy poprawne ciągi i formaty dla metody datetime.strptime
, którą widzieliśmy powyżej. Jeśli nie podaliśmy ich poprawnie, pojawią się błędy. Zobaczmy, jak poradzić sobie z tymi błędami. Uruchom następujący kod.
from datetime import datetime string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))
Powyższy kod zgłosi błąd, ponieważ formatowanie nie pasuje do ciągu daty i datetime
. Aby poradzić sobie z tego rodzaju błędami, możemy użyć metody try-except Pythona. Dodajmy to.
from datetime import datetime try: string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting)) except ValueError as error: print(error)
Teraz ponownie uruchom kod. Zobaczysz następujący komunikat o błędzie bez łamania kodu.
time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'
Podobnie możemy dodać try-except dla nadchodzącej metody parser.parse
. Pomaga nam to uniknąć złamania kodu w środku. Nie jest to specjalnie związane z kontekstem tego samouczka, ale przypomni o konieczności użycia go w kodzie.
To wszystko dla modułu datetime
. Przejdźmy do następnego modułu dateutil
.
Używając dateutil
Moduł dateutil
udostępnia rozszerzenia modułu datetime
. Dzięki wielu łatwym w użyciu metodom praca z datami i godzinami jest o wiele łatwiejsza. Zainstalujmy moduł za pomocą następującego polecenia.
pip install python-dateutil
Interesująca nas metoda to dateutil.parser.parse
. Zobaczmy, jak przekonwertować ciąg datetime
na obiekt datetime
.
parser.analizować
Metoda parser.parse
pobierze łańcuch typu datetime
i przekonwertuje go na odpowiedni format obiektu typu datetime
. Nie musimy podawać żadnego formatowania dla tej metody. Automatycznie przekonwertuje podany ciąg datetime
na obiekt datetime
. Zobaczmy przykład.
from dateutil import parser string = "19-12-2022 09:37:56 PM" print(parser.parse(string))
Jeśli uruchomisz powyższy kod, zobaczysz następujące dane wyjściowe.
2022-12-19 21:37:56
Ciąg daty i parser.parse
datetime
datetime
błąd, jeśli format ciągu daty i godziny nie jest zgodny z żądanym formatem. Możesz sprawdzić wszystkie formaty ciągów daty i godziny, które akceptuje do automatycznych konwersji.
Ponieważ metoda parser.parse
zwraca obiekt datetime
, możemy uzyskać dostęp do obiektów date
i time
oddzielnie, jak widzieliśmy w przypadku modułu datetime
. Zobaczmy kod.
from dateutil import parser string = "19-12-2022 09:37:56 PM" print("Date:", parser.parse(string).date()) print("Time:", parser.parse(string).time())
Możesz zobaczyć poniższe dane wyjściowe, jeśli uruchomisz powyższy kod.
Date: 2022-12-19 Time: 21:37:56
Jak widać, dateutil
ułatwia porównawczą pracę z datami i godzinami. Możesz zapoznać się z modułem w dokumentacji.
Wniosek
Użyliśmy jednego wbudowanego modułu i jednego modułu innej firmy, aby przekonwertować ciąg datetime
na obiekt DateTime. Jest jeszcze jeden wbudowany moduł o nazwie time
, za pomocą którego możemy przekonwertować łańcuch datetime
na obiekt DateTime, podobnie jak moduły datetime
i dateutil
. Spróbuj sam. Nie będzie to trudne, ponieważ robiłeś już podobne rzeczy z innymi modułami.
Może istnieć więcej bibliotek, dzięki którym możemy osiągnąć to samo. Moduły, których użyliśmy w samouczku na temat rzeczy, są standardowe i szeroko stosowane. Możesz dowiedzieć się więcej o innych modułach i wybrać ten, który najbardziej Ci odpowiada.
Możesz także zbadać, jak obliczyć różnicę czasu w Pythonie.
Szczęśliwe kodowanie