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ä. 9ae7afe94672939100434c62b411c660