Objekti datetime omogočajo preproste časovne izračune, vključno z do­da­ja­njem ali od­šte­va­njem in­ter­va­lov. Pre­tvar­ja­nje nizov v objekte datetime je bistveno za natančno or­ga­ni­zi­ra­nje, ana­li­zi­ra­nje in pri­ka­zo­va­nje časovnih podatkov v Pythonu.

Kako deluje pretvorba nizov v datetime v Pythonu?

Pretvorba niza Python v datetime vključuje pretvorbo be­se­dil­ne­ga niza, ki vsebuje datum in/ali čas, v objekt datetime. Datetime je po­dat­kov­na struktura Python, zasnovana za obdelavo in pri­la­ga­ja­nje podatkov o datumu in času. Pretvorba nizov v datetime je pogosto potrebna za obdelavo podatkov o datumu in času, ki se po­ja­vlja­jo v obliki niza.

Podatki se pre­tvo­ri­jo v format, ki se lahko uporabi za izvajanje izračunov, pri­mer­ja­vo datumov ali obli­ko­va­nje časovnih in­for­ma­cij, med drugim. Metode za po­ve­zo­va­nje izrazov z uporabo formata niza Python so lahko koristne tudi pri upra­vlja­nju objektov datetime.

Kako pre­tvo­ri­ti nize v datetime objekte v Pythonu

Obstajajo različne funkcije in moduli, kot sta knjižnica datetime in metoda strptime(), ki jih lahko uporabite za pretvorbo nizov v datetime objekte in obratno.

strptime()

Metoda strptime() (čas raz­čle­ni­tve niza) iz knjižnice datetime se uporablja za pretvorbo niza v objekt datetime v Pythonu. Potrebna sta dva argumenta: niz, ki ga je treba raz­čle­ni­ti, in format datuma/časa niza.

datetime.strptime(date_string, format)
python

datetime.datetime()

Z metodo strptime() je mogoče niz pre­tvo­ri­ti v objekt datetime.datetime, pri čemer se upošteva določen format datuma/časa.

from datetime import datetime
date_string = '2023-10-30 12:00:00'
date_object = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
print(date_object) # Output: 2023-10-30 12:00:00
python

V tem primeru je date_string določeno kot '2023-10-30 12:00:00', format '%Y-%m-%d %H:%M:%S' pa določa vrstni red in način pri­ka­zo­va­nja datuma in časa v nizu. Metoda strptime() in­ter­pre­ti­ra niz na podlagi tega formata in ustvari objekt datetime.datetime, ki se nato shrani v spre­men­ljiv­ki date_object.

Tukaj je, kaj pomeni '%Y-%m-%d %H:%M:%S':

  • %Y: šti­ri­me­stno leto
  • %m: Dvomestni mesec
  • %d: Dvomestni dan
  • %H: Ura (24-urni format)
  • %M: Minute
  • %S: Sekunde

datetime.time()

Z pretvorbo nizov v objekt datetime.time lahko pred­sta­vi­te čas brez datuma. To lahko storite z metodo strptime() iz razreda datetime ali z delitvijo časovnega niza na ure, minute in sekunde.

from datetime import datetime
time_string = '14::30::00'
time_object = datetime.strptime(time_string, '%H::%M::%S').time()
print(time_object) # Output: 14:30:00
python

'%H:%M:%S' pomeni format ure:minute:sekunde. Metoda strptime() in­ter­pre­ti­ra časovni niz v skladu s tem formatom in ustvari objekt datetime.time.

datetime.date()

Al­ter­na­tiv­no lahko niz pre­tvo­ri­te v objekt datetime.date z uporabo metode strptime() iz razreda datetime ali z ročnim raz­de­li­tvi­jo niza datuma na kom­po­nen­te leto, mesec in dan.

from datetime import datetime
date_string = '2023-11-30'
date_object = datetime.strptime(date_string, '%Y-%m-%d').date()
print(date_object) # Output: 2023-11-30
python

'%Y-%m-%d' je format leto-mesec-dan. Metoda strptime() analizira niz datuma in ustvari objekt datetime.date.

Kako odpraviti strptime() napak

Pri uporabi metode strptime() za pretvorbo nizov v datetime objekte v Pythonu lahko naletite na napake, zlasti če navedeni format ne ustreza formatu vhodnega niza. Tukaj je nekaj pogostih napak in načinov za njihovo od­pra­vlja­nje:

  • ValueError: time data '...' does not match format '...': Ta napaka se pojavi, če vhodni niz ne ustreza do­lo­če­ne­mu formatu. Preverite, ali je bil v strptime() upo­ra­bljen pravilni formatni vzorec.
  • ValueError: unconverted data remains: Ta napaka se prikaže, če po obdelavi niza ostanejo ne­in­ter­pre­ti­ra­ni podatki. Preverite, ali formatni vzorec zajema vse dele vhodnega niza.
  • TypeError: strptime() argument 1 must be str, not ...: To se lahko zgodi, če parameter, poslan v strptime(), ni niz. Preverite, ali je podana vrednost niz, ki vključuje format datuma/časa.

Pre­pri­čaj­te se, da formatni vzorec pravilno in­ter­pre­ti­ra vse dele vhodnega niza (leto, mesec, dan, čas itd.). Pomembno je tudi upo­šte­va­ti morebitne razlike v ločilih, velikih črkah in drugih po­drob­no­stih med formatnim vzorcem in vhodnim nizom.

Go to Main Menu