Cum se transformă șirul în date și oră în Python

Convertirea 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-time, 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 șirului date-time în obiect date-time ne face viața mai ușoară ca niciodată.

  Cum să utilizați funcția de traducere online din Outlook

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 oră și celălalt este formatul acelui șir de date și oră. Ș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 ora completă. Dacă doriți să obțineți data și ora separat, putem folosi metodele date și ore 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 data și ora își vor returna obiectele. Ei vor avea din nou metodele lor respective pentru date și ore.

  Cum să preveniți vulnerabilitățile de injectare a comenzii sistemului de operare?

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 oră nu este conform formatului dorit. Puteți verifica toate formatele de șir date și oră pe care le acceptă pentru conversiile automate.

  Cum să eliminați aplicațiile și paginile de pe ecranul de pornire al iPhone-ului dvs

Deoarece metoda parser.parse returnează obiectul datetime, putem accesa separat obiectele date și oră, 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 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ă 🙂