Cum se transformă șirul în date și oră în Python
Publicat: 2022-12-20Convertirea de la un tip de date la un alt tip de date este crucială în orice limbaj de programare. Aproape toate limbajele de programare acceptă conversii de tip pentru tipurile de date încorporate.
Tipurile de date personalizate, cum ar fi datetime, necesită module suplimentare pentru conversii. Avem nevoie de module, în special pentru conversiile date- datetime
, deoarece lucrul acestora nu a fost niciodată ușor pentru programatori. Din fericire, python are module încorporate pentru a lucra cu datetime.
Vom învăța cum să convertim un șir datetime
într-un obiect datetime
în Python folosind diferite module. Înainte de a trece la asta, să vedem de ce trebuie să-l convertim în primul rând.
De ce trebuie să convertim un șir datetime într-un obiect datetime?
Când trebuie să lucrăm cu date, nu este ușor să lucrăm dacă sunt în format șir. Conversia lor în format datetime face lucrul cu ele foarte ușor. Datele în șiruri sunt ca șirurile normale. Nu va avea metode speciale de a lucra cu datele. Va avea metode generale de șir, de care nu vom avea nevoie în timp ce lucrăm cu date.
Să presupunem că trebuie să comparăm două date. Dacă sunt în format șir, le putem compara corect. Dacă sunt în format datetime
, putem folosi operatorii de comparare precum numerele.
Acesta este doar un scenariu în care conversia în format datetime
facilitează lucrurile. Există o mulțime de scenarii, cum ar fi adăugarea de date, scăderea, gestionarea fusurilor orare etc., în care conversia datetime
date- datetime
în obiect date-time ne face viața mai ușoară ca niciodată.
Acestea fiind spuse, haideți să vedem diferite moduri de a converti un șir datetime
într-un obiect datetime
. Vom folosi module datetime
și dateutil
de la terți pentru a converti șirul datetime
în obiect datetime
. Să începem cu modulul datetime
Folosind datetime
datetime
este un modul încorporat din Python care este folosit pentru a lucra cu date și ore. Există o mulțime de clase în acest modul care ne ajută să lucrăm cu datele și ora. Vom folosi clasa datetime.datetime
pentru conversie.
datetime.datetime
are multe metode. Suntem interesați de metoda strptime
care ne va ajuta în conversie. Să verificăm.
datetime.strptime
Metoda datetime.strptime
este utilizată pentru a converti șirul datetime
într-un obiect datetime
. Este nevoie de două șiruri, unul este șir de date și datetime
și celălalt este formatul acelui șir de date și datetime
. Și returnează obiectul datetime
.
Să vedem un exemplu
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))
Dacă rulați codul de mai sus, veți vedea următoarea ieșire.
2022-12-19 21:37:56
Am luat un șir datetime
și l-am convertit în obiect datetime
folosind metoda datetime.strptime
. Asigurați-vă că formatul pe care îl furnizați metodei se potrivește exact cu șirul datetime
. Dacă nu s-au potrivit, este posibil să primiți o eroare sau o ieșire incorectă.
Am folosit câteva coduri de formatare pentru formatul datetime
. Puteți consulta toate codurile de format din documente.
Metoda datetime.strptime
returnează data și datetime
completă. Dacă doriți să obțineți data și ora separat, putem folosi metodele date și time
ale obiectului datetime
. Să vedem codul.
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())
Rulați codul de mai sus și veți vedea următoarea ieșire.
Date: 2022-12-19 Time: 21:37:56
Metodele date
și time
își vor returna obiectele. Ei vor avea din nou metodele lor respective pentru date și ore.
Am furnizat șirurile și formatele corecte pentru metoda datetime.strptime
pe care am văzut-o mai sus. Dacă nu le-am furnizat corect, atunci vom primi erori. Să vedem cum să gestionăm aceste erori. Rulați următorul cod.
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))
Codul de mai sus va genera o eroare, deoarece formatarea nu se potrivește cu șirul datetime
. Pentru a gestiona aceste tipuri de erori, putem folosi try-except de la Pythons. Să-l adăugăm.
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)
Acum, rulați din nou codul. Veți vedea următorul mesaj de eroare fără a sparge codul.
time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'
În mod similar, putem adăuga și metoda try-cu excepția următoarei metode parser.parse
. Ne ajută să evităm să spargem codul la mijloc. Acest lucru nu are legătură în mod special cu acest context tutorial, dar vă va aminti să îl utilizați în cod.
Asta este pentru modulul datetime
. Să trecem la următorul modul dateutil
.
Folosind dateutil
Modulul dateutil
oferă extensii pentru modulul datetime
. Face lucrul cu datele și orele mult mai ușor cu o mulțime de metode cu utilizare ușoară. Să instalăm modulul cu următoarea comandă.
pip install python-dateutil
Metoda care ne interesează este dateutil.parser.parse
. Să vedem cum să convertim șirul datetime
în obiect datetime
.
parser.parse
Metoda parser.parse
va lua un șir datetime
și îl va converti într-un format de obiect datetime
respectiv. Nu trebuie să oferim nicio formatare pentru această metodă. Acesta va converti automat șirul datetime
dat în obiect datetime
. Să vedem un exemplu.
from dateutil import parser string = "19-12-2022 09:37:56 PM" print(parser.parse(string))
Dacă rulați codul de mai sus, veți vedea următoarea ieșire.
2022-12-19 21:37:56
Șirul datetime
trebuie să fie într-un anumit format pe care metoda parser.parse
îl acceptă. Va genera o eroare dacă formatul șirului de date și datetime
nu este conform formatului dorit. Puteți verifica toate formatele de șir date și oră pe care le acceptă pentru conversiile automate.
Deoarece metoda parser.parse
returnează obiectul datetime
, putem accesa separat obiectele date
și time
, așa cum am văzut cu modulul datetime
. Să vedem codul.
from dateutil import parser string = "19-12-2022 09:37:56 PM" print("Date:", parser.parse(string).date()) print("Time:", parser.parse(string).time())
Puteți vedea rezultatul de mai jos dacă rulați codul de mai sus.
Date: 2022-12-19 Time: 21:37:56
După cum puteți vedea, dateutil
face mai ușor să lucrați cu datele și orele comparativ. Puteți explora modulul în documente.
Concluzie
Am folosit un modul încorporat și un modul terță parte pentru a converti șirul datetime
într-un obiect DateTime. Există un alt modul încorporat numit time
cu care putem converti șirul datetime
într-un obiect DateTime similar cu modulele datetime
și dateutil
. Incearca-l tu insuti. Nu va fi greu, deoarece ați făcut deja un lucru similar cu alte module.
Ar putea exista mai multe biblioteci cu care putem realiza același lucru. Modulele pe care le-am folosit în tutorialul de lucru sunt standard și utilizate pe scară largă. Puteți explora mai multe despre alte module și îl puteți alege pe cel mai potrivit pentru dvs.
De asemenea, puteți explora cum să calculați diferența de timp în python.
Codare fericită