Datetime-objekter gjør det mulig å utføre enkle tidsberegninger, inkludert å legge til eller trekke fra intervaller. Konvertering av strenger til datetime-objekter er avgjørende for å organisere, analysere og vise tidsdata nøyaktig i Python.

Hvordan fungerer konvertering av strenger til dato og klokkeslett i Python?

Konvertering av en Python-streng til datetime innebærer å transformere en tekststreng, som inneholder en dato og/eller tid, til et datetime-objekt. Datetime er en Python-datastruktur som er utviklet for å håndtere og justere dato- og tidsinformasjon. Konvertering av strenger til datetime er ofte nødvendig for å håndtere dato- og tidsdata som vises i strengformat.

Dataene konverteres til et format som kan brukes til å utføre beregninger, sammenligne datoer eller formatere tidsinformasjon, blant annet. Metoder for å sammenføye uttrykk ved hjelp av Python-strengformat kan også være nyttige når du håndterer datetime-objekter.

Hvordan konvertere strenger til datetime-objekter i Python

Det finnes ulike funksjoner og moduler, for eksempel datetime og strptime(), som du kan bruke til å konvertere strenger til datetime-objekter og omvendt.

strptime()

Metoden strptime() (string parse time) fra biblioteket datetime brukes til å konvertere en streng til et Python datetime-objekt. To argumenter er nødvendige: strengen som skal parses og dato-/tidsformatet til strengen.

datetime.strptime(date_string, format)
python

datetime.datetime()

Med metoden strptime() kan en streng konverteres til et objekt datetime.datetime, med hensyn til et spesifikt dato-/tidsformat.

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

I dette eksemplet er date_string angitt som '2023-10-30 12:00:00', og formatet '%Y-%m-%d %H:%M:%S' definerer rekkefølgen og hvordan dato og klokkeslett skal vises i strengen. Metoden strptime() tolker strengen basert på dette formatet og genererer et datetime.datetime, som deretter lagres i variabelen date_object.

Her er hva '%Y-%m-%d %H:%M:%S' betyr:

  • %Y: Fire-sifret årstall
  • %m: To-sifret måned
  • %d: Tosifret dag
  • %H: Time (24-timersformat)
  • %M: Minutter
  • %S: Sekunder

datetime.time()

Ved å konvertere strenger til et datetime.time kan du representere klokkeslett uten dato. Dette kan gjøres ved hjelp av strptime() fra datetime, eller ved å dele en tidsstreng inn i timer, minutter og sekunder.

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' står for formatet timer:minutter:sekunder. Metoden strptime() tolker tidsstrengen i henhold til dette formatet og oppretter et datetime.time -objekt.

datetime.date()

Alternativt kan du omforme en streng til et datetime.date objekt ved å bruke strptime() fra datetime, eller ved å manuelt dele datostrengen inn i år, måned og dag.

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' er formatet år-måned-dag. Metoden strptime() analyserer datostrengen og oppretter et datetime.date -objekt.

Hvordan feilsøke strptime() feil

Når du bruker strptime() for å konvertere strenger til datetime-objekter i Python, kan du støte på feil, spesielt hvis det angitte formatet ikke samsvarer med formatet på inndatastrengen. Her er noen vanlige feil og måter å løse dem på:

  • ValueError: time data '...' does not match format '...': Denne feilen oppstår hvis inndatastrengen ikke samsvarer med det angitte formatet. Kontroller at riktig formatmønster ble brukt i strptime().
  • ValueError: unconverted data remains: Denne feilen vises hvis det gjenstår ufortolkede data etter at strengen er behandlet. Kontroller at formatmønsteret dekker alle deler av inndatastrengen.
  • TypeError: strptime() argument 1 must be str, not ...: Dette kan skje hvis parameteren som sendes til strptime() ikke er en streng. Kontroller at den angitte verdien er en streng som inkluderer dato-/tidsformatet.

Du bør sørge for at formatmønsteret tolker alle deler av inndatastrengen (år, måned, dag, klokkeslett osv.) riktig. Det er også viktig å ta hensyn til mulige forskjeller i skilletegn, store bokstaver og andre detaljer mellom formatmønsteret og inndatastrengen.

Go to Main Menu