Datetime-objektid või­mal­da­vad teha lihtsaid ajalisi arvutusi, seal­hul­gas in­ter­val­lide liitmist ja la­hu­ta­mist. Stringide tei­sen­da­mine datetime-ob­jek­ti­deks on oluline aja­and­mete täpseks or­ga­ni­see­ri­miseks, ana­lüü­si­miseks ja ku­va­miseks Pythonis.

Kuidas toimib stringide tei­sen­da­mine datetime’iks Pythonis?

Python-stringi tei­sen­da­mine datetime’iks hõlmab teks­tist­ringi, mis sisaldab kuupäeva ja/või kellaaega, tei­sen­da­mist datetime-objektiks. Datetime on Python-and­me­st­ruk­tuur, mis on loodud kuupäeva- ja kel­laa­ja­and­mete tööt­le­miseks ja ko­han­da­miseks. Stringide tei­sen­da­mine datetime’iks on sageli vajalik string-vormingus esinevate kuupäeva- ja kel­laa­ja­and­mete tööt­le­miseks.

Andmed tei­sen­da­takse formaati, mida saab kasutada muu hulgas arvutuste te­ge­miseks, kuu­päe­vade võrd­le­miseks või aja­and­mete vor­min­da­miseks. Meetodid väl­jen­dite ühen­da­miseks Python string-formaadi abil võivad olla kasulikud ka datetime-objektide hal­da­misel.

Kuidas tei­sen­dada stringid datetime-ob­jek­ti­deks Pythonis

On olemas mit­me­su­gu­seid funkt­sioone ja mooduleid, näiteks datetime raa­ma­tu­kogu ja strptime() meetod, mida saab kasutada stringide tei­sen­da­miseks datetime-ob­jek­ti­deks ja vastupidi.

strptime()

datetime raa­ma­tu­kogu meetodit strptime() (string parse time) ka­su­ta­takse stringi tei­sen­da­miseks Python datetime objektiks. Vaja on kahte argumenti: parsitav string ja stringi kuupäeva/kellaaja formaat.

datetime.strptime(date_string, format)
python

datetime.datetime()

strptime() meetodiga saab stringi tei­sen­dada datetime.datetime objektiks, võttes arvesse kindlat kuupäeva/kellaaja formaati.

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

Selles näites on date_string määratud kui '2023-10-30 12:00:00' ja formaat '%Y-%m-%d %H:%M:%S' määrab jär­je­korra ja kuupäeva ja kellaaja kuvamise viisi stringis. Meetod strptime() tõlgendab stringi selle formaadi alusel ja ge­ne­ree­rib objekti datetime.datetime, mis sal­ves­ta­takse seejärel muu­tu­jasse date_object.

Siin on '%Y-%m-%d %H:%M:%S' tähendus:

  • %Y: Nel­ja­ko­ha­line aasta
  • %m: Ka­he­ko­ha­line kuu
  • %d: Ka­he­ko­ha­line päev
  • %H: Kell (24-tunnine formaat)
  • %M: Minutid
  • %S: Sekundid

datetime.time()

Muutes stringid datetime.time objektiks, saate esitada kellaaja ilma kuu­päe­vata. Seda saab teha, kasutades strptime() meetodit klassist datetime või jagades kellaaja stringi tundideks, mi­nu­ti­teks ja se­kun­di­teks.

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' tähistab formaati tund:minut:sekund. Meetod strptime() tõlgendab aja stringi vastavalt sellele for­maa­dile ja loob objekti datetime.time.

datetime.date()

Al­ter­na­tiivina võite tei­sen­dada stringi datetime.date objektiks, kasutades strptime() meetodit klassist datetime või jagades kuupäeva stringi käsitsi aasta, kuu ja päeva kom­po­nen­ti­deks.

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' on aasta-kuu-päeva formaat. strptime() meetod analüüsib kuupäeva stringi ja loob datetime.date objekti.

Kuidas lahendada strptime() viga

Kui kasutate Pythonis stringide datetime-ob­jek­ti­deks tei­sen­da­miseks strptime(), võivad tekkida vead, eriti kui määratud formaat ei vasta si­sendst­ringi for­maa­dile. Siin on mõned levinumad vead ja nende pa­ran­da­mise viisid:

  • ValueError: time data '...' does not match format '...': See viga tekib, kui si­sendst­ring ei vasta määratud for­maa­dile. Veenduge, et strptime().
  • ValueError: unconverted data remains: See viga kuvatakse, kui pärast stringi tööt­le­mist jääb alles tõl­gen­da­mata andmeid. Veenduge, et for­maa­di­mus­ter hõlmab si­sendst­ringi kõiki osi.
  • TypeError: strptime() argument 1 must be str, not ...: See võib juhtuda, kui pa­ra­mee­ter, mis on edastatud strptime(), ei ole string. Veenduge, et antud väärtus on string, mis sisaldab kuupäeva/kellaaja formaati.

Veenduge, et vor­min­gu­mus­ter tõlgendab õigesti kõik si­sendst­ringi osad (aasta, kuu, päev, kellaaeg jne). Samuti on oluline arvestada võimalike eri­ne­vus­tega eral­da­jate, suurte tähtede ja muude detailide osas vor­min­gu­mustri ja si­sendst­ringi vahel.

Go to Main Menu