Kaip konvertuoti eilutę į datetime Python kalboje
Datetime objektai leidžia atlikti paprastus laiko skaičiavimus, įskaitant intervalų pridėjimą ar atėmimą. Styginių konvertavimas į datetime objektus yra būtinas norint tiksliai organizuoti, analizuoti ir rodyti laiko duomenis Python kalboje.
Kaip Python kalboje veikia stygų konvertavimas į datetime?
Python stygos konvertavimas į datetime reiškia teksto stygos, kurioje yra data ir (arba) laikas, transformavimą į datetime objektą. Datetime yra Python duomenų struktūra, skirta tvarkyti ir koreguoti datos ir laiko informaciją. Stygų konvertavimas į datetime dažnai reikalingas, norint tvarkyti datos ir laiko duomenis, kurie pateikiami stygos formatu.
Duomenys konvertuojami į formatą, kuris gali būti naudojamas skaičiavimams atlikti, datų palyginimams atlikti ar laiko informacijai formatuoti, be kitų dalykų. Metodai, skirti išraiškoms sujungti naudojant Python stygos formatą, taip pat gali būti naudingi tvarkant datetime objektus.
Kaip konvertuoti eilutes į datetime objektus Python kalboje
Yra įvairių funkcijų ir modulių, pvz., datetime biblioteka ir strptime() metodas, kuriuos galite naudoti norėdami konvertuoti eilutes į datetime objektus ir atvirkščiai.
strptime()
datetime bibliotekos strptime() (string parse time) metodas naudojamas konvertuoti eilutę į Python datetime objektą. Reikalingi du argumentai: analizuotina eilutė ir eilutės datos/laiko formatas.
datetime.strptime(date_string, format)pythondatetime.datetime()
Naudojant strptime() metodą, eilutė gali būti konvertuojama į datetime.datetime objektą, atsižvelgiant į 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:00pythonŠ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 interpretuoja eilutę pagal šį formatą ir sukuria datetime.datetime objektą, kuris vėliau yra saugomas date_object kintamajame.
Š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()
Konvertuodami eilutes į datetime.time objektą, galite pateikti laiką be datos. Tai galima padaryti naudojant strptime() metodą iš datetime klasės arba padalijant 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:00python'%H:%M:%S' reiškia valandos:minutės:sekundės formatą. strptime() metodas interpretuoja 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 padalindami datos eilutę į metų, mėnesių ir dienų komponentus.
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-30python'%Y-%m-%d' yra metų-mėnesio-dienos formatas. strptime() metodas analizuoja datos eilutę ir sukuria datetime.date objektą.
Kaip išspręsti strptime() klaidas
Naudodami strptime() metodą, skirtą konvertuoti eilutes į datetime objektus Python kalboje, galite susidurti su klaidomis, ypač jei nurodytas formatas neatitinka įvesties eilutės formato. Čia pateikiami keli dažniausiai pasitaikantys klaidų pavyzdžiai ir jų sprendimo būdai:
ValueError: time data '...' does not match format '...': Ši klaida atsiranda, jei įvesties eilutė neatitinka nurodyto formato. Įsitikinkite, kadstrptime()buvo naudojamas teisingas formato šablonas.ValueError: unconverted data remains: Ši klaida rodomas, jei po eilutės apdorojimo lieka neinterpretuoti duomenys. Įsitikinkite, kad formato šablonas apima visas įvesties eilutės dalis.TypeError: strptime() argument 1 must be str, not ...: Tai gali atsitikti, jei parametras, perduotasstrptime(), nėra eilutė. Įsitikinkite, kad pateikta reikšmė yra eilutė, kurioje yra datos/laiko formatas.
Turėtumėte užtikrinti, kad formato šablonas teisingai interpretuotų visas įvesties eilutės dalis (metus, mėnesį, dieną, laiką ir pan.). Taip pat svarbu atsižvelgti į galimus skirtumus tarp formato šablono ir įvesties eilutės atskyriklių, didžiųjų raidžių ir kitų detalių.