Datetime objektai leidžia atlikti paprastus laiko skai­čia­vi­mus, įskaitant intervalų pridėjimą ar atėmimą. Styginių kon­ver­ta­vi­mas į datetime objektus yra būtinas norint tiksliai or­ga­ni­zuo­ti, ana­li­zuo­ti ir rodyti laiko duomenis Python kalboje.

Kaip Python kalboje veikia stygų kon­ver­ta­vi­mas į datetime?

Python stygos kon­ver­ta­vi­mas į datetime reiškia teksto stygos, kurioje yra data ir (arba) laikas, trans­for­ma­vi­mą į datetime objektą. Datetime yra Python duomenų struktūra, skirta tvarkyti ir koreguoti datos ir laiko in­for­ma­ci­ją. Stygų kon­ver­ta­vi­mas į datetime dažnai rei­ka­lin­gas, norint tvarkyti datos ir laiko duomenis, kurie pa­tei­kia­mi stygos formatu.

Duomenys kon­ver­tuo­ja­mi į formatą, kuris gali būti nau­do­ja­mas skai­čia­vi­mams atlikti, datų pa­ly­gi­ni­mams atlikti ar laiko in­for­ma­ci­jai for­ma­tuo­ti, be kitų dalykų. Metodai, skirti iš­raiš­koms sujungti naudojant Python stygos formatą, taip pat gali būti naudingi tvarkant datetime objektus.

Kaip kon­ver­tuo­ti eilutes į datetime objektus Python kalboje

Yra įvairių funkcijų ir modulių, pvz., datetime bi­b­lio­te­ka ir strptime() metodas, kuriuos galite naudoti norėdami kon­ver­tuo­ti eilutes į datetime objektus ir at­virkš­čiai.

strptime()

datetime bi­b­lio­te­kos strptime() (string parse time) metodas nau­do­ja­mas kon­ver­tuo­ti eilutę į Python datetime objektą. Rei­ka­lin­gi du ar­gu­men­tai: ana­li­zuo­ti­na eilutė ir eilutės datos/laiko formatas.

datetime.strptime(date_string, format)
python

datetime.datetime()

Naudojant strptime() metodą, eilutė gali būti kon­ver­tuo­ja­ma į datetime.datetime objektą, at­si­žvel­giant į konkretų datos/laiko formatą.

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

Šiame pavyzdyje date_string yra nurodytas kaip '2023-10-30 12:00:00', o formatas '%Y-%m-%d %H:%M:%S' apibrėžia tvarką ir tai, kaip data ir laikas turėtų būti rodomi eilutėje. strptime() metodas in­ter­pre­tuo­ja eilutę pagal šį formatą ir sukuria datetime.datetime objektą, kuris vėliau yra saugomas date_object kin­ta­ma­ja­me.

Štai ką reiškia '%Y-%m-%d %H:%M:%S':

  • %Y: Keturių skaitmenų metai
  • %m: Dviejų skaitmenų mėnuo
  • %d: Dviejų skaitmenų diena
  • %H: Valanda (24 valandų formatas)
  • %M: Minutės
  • %S: Sekundės

datetime.time()

Kon­ver­tuo­da­mi eilutes į datetime.time objektą, galite pateikti laiką be datos. Tai galima padaryti naudojant strptime() metodą iš datetime klasės arba pa­da­li­jant laiko eilutę į valandas, minutes ir sekundes.

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' reiškia valandos:minutės:sekundės formatą. strptime() metodas in­ter­pre­tuo­ja laiko eilutę pagal šį formatą ir sukuria datetime.time objektą.

datetime.date()

Arba galite paversti eilutę į datetime.date objektą naudodami strptime() metodą iš datetime klasės arba rankiniu būdu pa­da­lin­da­mi datos eilutę į metų, mėnesių ir dienų kom­po­nen­tus.

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' yra metų-mėnesio-dienos formatas. strptime() metodas ana­li­zuo­ja datos eilutę ir sukuria datetime.date objektą.

Kaip išspręsti strptime() klaidas

Naudodami strptime() metodą, skirtą kon­ver­tuo­ti eilutes į datetime objektus Python kalboje, galite susidurti su klaidomis, ypač jei nurodytas formatas ne­ati­tin­ka įvesties eilutės formato. Čia pa­tei­kia­mi keli daž­niau­siai pa­si­tai­kan­tys klaidų pa­vyz­džiai ir jų sprendimo būdai:

  • ValueError: time data '...' does not match format '...': Ši klaida atsiranda, jei įvesties eilutė ne­ati­tin­ka nurodyto formato. Įsi­ti­kin­ki­te, kad strptime() buvo nau­do­ja­mas teisingas formato šablonas.
  • ValueError: unconverted data remains: Ši klaida rodomas, jei po eilutės ap­do­ro­ji­mo lieka nein­ter­pre­tuo­ti duomenys. Įsi­ti­kin­ki­te, kad formato šablonas apima visas įvesties eilutės dalis.
  • TypeError: strptime() argument 1 must be str, not ...: Tai gali atsitikti, jei pa­ra­met­ras, perduotas strptime(), nėra eilutė. Įsi­ti­kin­ki­te, kad pateikta reikšmė yra eilutė, kurioje yra datos/laiko formatas.

Tu­rė­tu­mė­te už­tik­rin­ti, kad formato šablonas teisingai in­ter­pre­tuo­tų visas įvesties eilutės dalis (metus, mėnesį, dieną, laiką ir pan.). Taip pat svarbu at­si­žvelg­ti į galimus skirtumus tarp formato šablono ir įvesties eilutės at­sky­rik­lių, didžiųjų raidžių ir kitų detalių.

Go to Main Menu