Datetime-objektit mah­dol­lis­ta­vat yk­sin­ker­tai­set ai­ka­las­kel­mat, kuten ai­ka­vä­lien li­sää­mi­sen tai vä­hen­tä­mi­sen. Merk­ki­jo­no­jen muun­ta­mi­nen datetime-ob­jek­teik­si on vält­tä­mä­tön­tä ai­ka­tie­to­jen tarkalle jär­jes­tä­mi­sel­le, ana­ly­soin­nil­le ja näyt­tä­mi­sel­le Pyt­ho­nis­sa.

Miten merk­ki­jo­no­jen muun­ta­mi­nen päi­vä­mää­rä- ja ai­ka­muo­toon toimii Pyt­ho­nis­sa?

Python-merk­ki­jo­non muun­ta­mi­nen datetime-tyypiksi tar­koit­taa teks­ti­merk­ki­jo­non, joka sisältää päi­vä­mää­rän ja/tai kel­lon­ajan, muun­ta­mis­ta datetime-ob­jek­tik­si. Datetime on Python-tie­to­ra­ken­ne, joka on suun­ni­tel­tu kä­sit­te­le­mään ja säätämään päi­vä­mää­rä- ja ai­ka­tie­to­ja. Merk­ki­jo­no­jen muun­ta­mi­nen datetime-tyypiksi on usein tarpeen, jotta merk­ki­jo­no­for­maa­tis­sa esiin­ty­viä päi­vä­mää­rä- ja ai­ka­tie­to­ja voidaan käsitellä.

Tiedot muun­ne­taan muotoon, jota voidaan käyttää muun muassa las­kel­mien suo­rit­ta­mi­seen, päi­vä­mää­rien ver­tai­luun tai ai­ka­tie­to­jen muo­toi­luun. Me­ne­tel­mät lausek­kei­den yh­dis­tä­mi­sek­si Python-merk­ki­jo­no­for­maa­tin avulla voivat olla hyö­dyl­li­siä myös datetime-objektien hal­lin­nas­sa.

Kuinka muuntaa merk­ki­jo­not datetime-ob­jek­teik­si Pyt­ho­nis­sa

On olemassa erilaisia toi­min­to­ja ja moduuleja, kuten datetime ja strptime(), joita voit käyttää merk­ki­jo­no­jen muun­ta­mi­seen datetime-ob­jek­teik­si ja päin­vas­toin.

strptime()

datetime kirjaston strptime() (merk­ki­jo­non jä­sen­tä­mi­sai­ka) -me­ne­tel­mää käytetään merk­ki­jo­non muun­ta­mi­seen Python-datetime -ob­jek­tik­si. Tarvitaan kaksi ar­gu­ment­tia: jä­sen­net­tä­vä merk­ki­jo­no ja merk­ki­jo­non päi­vä­mää­rä-/ai­ka­for­maat­ti.

datetime.strptime(date_string, format)
python

datetime.datetime()

strptime() -me­ne­tel­mäl­lä merk­ki­jo­no voidaan muuntaa datetime.datetime -ob­jek­tik­si ottaen huomioon tietyn päi­vä­mää­rä-/ai­ka­for­maa­tin.

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

Tässä esi­mer­kis­sä date_string on mää­ri­tel­ty arvoksi '2023-10-30 12:00:00', ja muoto '%Y-%m-%d %H:%M:%S' määrittää jär­jes­tyk­sen ja tavan, jolla päi­vä­mää­rä ja kel­lo­nai­ka näkyvät merk­ki­jo­nos­sa. Menetelmä strptime() tulkitsee merk­ki­jo­non tämän muodon pe­rus­teel­la ja luo datetime.datetime, joka tal­len­ne­taan sitten date_object.

Tässä on '%Y-%m-%d %H:%M:%S' merkitys:

  • %Y: Ne­li­nu­me­roi­nen vuosi
  • %m: Kak­si­nu­me­roi­nen kuukausi
  • %d: Kak­si­nu­me­roi­nen päivä
  • %H: Tunti (24 tunnin muoto)
  • %M: Minuutit
  • %S: Sekunnit

datetime.time()

Muun­ta­mal­la merk­ki­jo­not datetime.time jektiksi voit esittää kel­lo­na­jat ilman päi­vä­mää­rää. Tämä voidaan tehdä käyt­tä­mäl­lä strptime() datetime luokasta tai jakamalla ai­ka­merk­ki­jo­no tunteihin, mi­nuut­tei­hin ja se­kun­tei­hin.

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' tar­koit­taa tuntia:minuuttia:sekuntia -muotoa. strptime() tulkitsee ai­ka­merk­ki­jo­non tämän muodon mu­kai­ses­ti ja luo datetime.time.

datetime.date()

Vaih­toeh­toi­ses­ti voit muuntaa merk­ki­jo­non datetime.date -ob­jek­tik­si käyt­tä­mäl­lä strptime() datetime luokasta tai jakamalla päi­vä­mää­rä­merk­ki­jo­non ma­nu­aa­li­ses­ti vuosi-, kuukausi- ja päi­vä­kom­po­nent­tei­hin.

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 vuoden-kuukauden-päivän muoto. strptime() -menetelmä analysoi päi­vä­mää­rä­merk­ki­jo­non ja luo datetime.date -objektin.

strptime() virheen vian­mää­ri­tys

Kun käytät strptime() merk­ki­jo­no­jen muun­ta­mi­seen datetime-ob­jek­teik­si Pyt­ho­nis­sa, saatat kohdata virheitä, etenkin jos mää­ri­tet­ty muoto ei vastaa syö­te­merk­ki­jo­non 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 merk­ki­jo­no ei vastaa mää­ri­tet­tyä muotoa. Varmista, että strptime()ssa on käytetty oikeaa muo­toi­lu­mal­lia.
  • ValueError: unconverted data remains: Tämä virhe näkyy, jos merk­ki­jo­non kä­sit­te­lyn jälkeen on jäljellä tul­kit­se­mat­to­mia tietoja. Varmista, että muo­toi­lu­mal­li kattaa syö­te­merk­ki­jo­non kaikki osat.
  • TypeError: strptime() argument 1 must be str, not ...: Tämä voi tapahtua, jos parametri, joka on välitetty strptime():een, ei ole merk­ki­jo­no. Varmista, että annettu arvo on merk­ki­jo­no, joka sisältää päi­vä­mää­rä-/ai­ka­for­maa­tin.

Varmista, että muo­toi­lu­mal­li tulkitsee oikein kaikki syö­te­merk­ki­jo­non osat (vuosi, kuukausi, päivä, kel­lo­nai­ka jne.). On myös tärkeää ottaa huomioon mah­dol­li­set erot erot­ti­mien, isojen kir­jain­ten ja muiden yk­si­tyis­koh­tien välillä muo­toi­lu­mal­lin ja syö­te­merk­ki­jo­non välillä. 9ae7afe94672939100434c62b411c660

Siirry pää­va­lik­koon