Kuinka muuntaa merkkijono datetime-tyypiksi Pythonissa
Datetime-objektit mahdollistavat yksinkertaiset aikalaskelmat, kuten aikavälien lisäämisen tai vähentämisen. Merkkijonojen muuntaminen datetime-objekteiksi on välttämätöntä aikatietojen tarkalle järjestämiselle, analysoinnille ja näyttämiselle Pythonissa.
Miten merkkijonojen muuntaminen päivämäärä- ja aikamuotoon toimii Pythonissa?
Python-merkkijonon muuntaminen datetime-tyypiksi tarkoittaa tekstimerkkijonon, joka sisältää päivämäärän ja/tai kellonajan, muuntamista datetime-objektiksi. Datetime on Python-tietorakenne, joka on suunniteltu käsittelemään ja säätämään päivämäärä- ja aikatietoja. Merkkijonojen muuntaminen datetime-tyypiksi on usein tarpeen, jotta merkkijonoformaatissa esiintyviä päivämäärä- ja aikatietoja voidaan käsitellä.
Tiedot muunnetaan muotoon, jota voidaan käyttää muun muassa laskelmien suorittamiseen, päivämäärien vertailuun tai aikatietojen muotoiluun. Menetelmät lausekkeiden yhdistämiseksi Python-merkkijonoformaatin avulla voivat olla hyödyllisiä myös datetime-objektien hallinnassa.
Kuinka muuntaa merkkijonot datetime-objekteiksi Pythonissa
On olemassa erilaisia toimintoja ja moduuleja, kuten datetime ja strptime(), joita voit käyttää merkkijonojen muuntamiseen datetime-objekteiksi ja päinvastoin.
strptime()
datetime kirjaston strptime() (merkkijonon jäsentämisaika) -menetelmää käytetään merkkijonon muuntamiseen Python-datetime -objektiksi. Tarvitaan kaksi argumenttia: jäsennettävä merkkijono ja merkkijonon päivämäärä-/aikaformaatti.
datetime.strptime(date_string, format)pythondatetime.datetime()
strptime() -menetelmällä merkkijono voidaan muuntaa datetime.datetime -objektiksi ottaen huomioon tietyn päivämäärä-/aikaformaatin.
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:00pythonTässä esimerkissä date_string on määritelty arvoksi '2023-10-30 12:00:00', ja muoto '%Y-%m-%d %H:%M:%S' määrittää järjestyksen ja tavan, jolla päivämäärä ja kellonaika näkyvät merkkijonossa. Menetelmä strptime() tulkitsee merkkijonon tämän muodon perusteella ja luo datetime.datetime, joka tallennetaan sitten date_object.
Tässä on '%Y-%m-%d %H:%M:%S' merkitys:
%Y: Nelinumeroinen vuosi%m: Kaksinumeroinen kuukausi%d: Kaksinumeroinen päivä%H: Tunti (24 tunnin muoto)%M: Minuutit%S: Sekunnit
datetime.time()
Muuntamalla merkkijonot datetime.time jektiksi voit esittää kellonajat ilman päivämäärää. Tämä voidaan tehdä käyttämällä strptime() datetime luokasta tai jakamalla aikamerkkijono tunteihin, minuutteihin ja sekunteihin.
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' tarkoittaa tuntia:minuuttia:sekuntia -muotoa. strptime() tulkitsee aikamerkkijonon tämän muodon mukaisesti ja luo datetime.time.
datetime.date()
Vaihtoehtoisesti voit muuntaa merkkijonon datetime.date -objektiksi käyttämällä strptime() datetime luokasta tai jakamalla päivämäärämerkkijonon manuaalisesti vuosi-, kuukausi- ja päiväkomponentteihin.
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' on vuoden-kuukauden-päivän muoto. strptime() -menetelmä analysoi päivämäärämerkkijonon ja luo datetime.date -objektin.
strptime() virheen vianmääritys
Kun käytät strptime() merkkijonojen muuntamiseen datetime-objekteiksi Pythonissa, saatat kohdata virheitä, etenkin jos määritetty muoto ei vastaa syötemerkkijonon muotoa. Tässä on joitakin yleisiä virheitä ja tapoja korjata ne:
ValueError: time data '...' does not match format '...': Tämä virhe ilmenee, jos syötetty merkkijono ei vastaa määritettyä muotoa. Varmista, ettästrptime()ssa on käytetty oikeaa muotoilumallia.ValueError: unconverted data remains: Tämä virhe näkyy, jos merkkijonon käsittelyn jälkeen on jäljellä tulkitsemattomia tietoja. Varmista, että muotoilumalli kattaa syötemerkkijonon kaikki osat.TypeError: strptime() argument 1 must be str, not ...: Tämä voi tapahtua, jos parametri, joka on välitettystrptime():een, ei ole merkkijono. Varmista, että annettu arvo on merkkijono, joka sisältää päivämäärä-/aikaformaatin.
Varmista, että muotoilumalli tulkitsee oikein kaikki syötemerkkijonon osat (vuosi, kuukausi, päivä, kellonaika jne.). On myös tärkeää ottaa huomioon mahdolliset erot erottimien, isojen kirjainten ja muiden yksityiskohtien välillä muotoilumallin ja syötemerkkijonon välillä.