Datetime-objekter muliggør enkle tids­be­reg­nin­ger, herunder til­fø­jel­se eller fra­træk­ning af in­ter­val­ler. Kon­ver­te­ring af strenge til datetime-objekter er afgørende for nøjagtig or­ga­ni­se­ring, analyse og visning af tidsdata i Python.

Hvordan fungerer kon­ver­te­ring af strenge til datetime i Python?

Kon­ver­te­ring af en Python-streng til datetime indebærer om­dan­nel­se af en tekst­streng, der in­de­hol­der en dato og/eller et klok­keslæt, til et datetime-objekt. Datetime er en Python-da­ta­struk­tur, der er designet til at håndtere og justere dato- og tids­op­lys­nin­ger. Kon­ver­te­ring af strenge til datetime er ofte nød­ven­digt for at håndtere dato- og tidsdata, der vises i streng­for­mat.

Dataene kon­ver­te­res til et format, der blandt andet kan bruges til at udføre be­reg­nin­ger, foretage dato-sam­men­lig­nin­ger eller formatere tids­op­lys­nin­ger. Metoder til sam­men­kæd­ning af udtryk ved hjælp af Python-streng­for­mat kan også være nyttige, når man ad­mi­ni­stre­rer datetime-objekter.

Sådan kon­ver­te­res strenge til datetime-objekter i Python

Der findes for­skel­li­ge funk­tio­ner og moduler, såsom bi­bli­o­te­ket datetime og metoden strptime(), som du kan bruge til at kon­ver­te­re strenge til datetime-objekter og omvendt.

strptime()

Metoden strptime() (string parse time) fra bi­bli­o­te­ket datetime bruges til at kon­ver­te­re en streng til et Python datetime-objekt. Der kræves to ar­gu­men­ter: den streng, der skal parsers, og strengens dato-/tids­for­mat.

datetime.strptime(date_string, format)
python

datetime.datetime()

Med metoden strptime() kan en streng kon­ver­te­res til et objekt datetime.datetime under hen­syn­ta­gen til et bestemt dato-/tids­for­mat.

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 eksempel er date_string angivet som '2023-10-30 12:00:00', og formatet '%Y-%m-%d %H:%M:%S' definerer ræk­ke­føl­gen og hvordan datoen og klok­keslæt­tet skal vises i strengen. Metoden strptime() fortolker strengen baseret på dette format og genererer et datetime.datetime objekt, som ef­ter­føl­gen­de gemmes i variablen date_object.

Her er hvad '%Y-%m-%d %H:%M:%S' betyder:

  • %Y: Fi­re­cif­ret årstal
  • %m: Tocifrede måned
  • %d: To-cifret dag
  • %H: Time (24-timers format)
  • %M: Minutter
  • %S: Sekunder

datetime.time()

Ved at kon­ver­te­re strenge til et datetime.time kan du re­præ­sen­te­re tids­punk­ter uden en dato. Dette kan gøres ved hjælp af strptime() fra datetime eller ved at opdele en tids­streng 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() fortolker tids­stren­gen i henhold til dette format og opretter et datetime.time -objekt.

datetime.date()

Al­ter­na­tivt kan du omdanne en streng til et datetime.date jekt ved at bruge strptime() oden fra datetime eller ved manuelt at opdele da­to­stren­gen 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() ana­ly­se­rer da­to­stren­gen og opretter et datetime.date -objekt.

Sådan løses strptime() fejl

Når du bruger strptime() til at kon­ver­te­re strenge til datetime-objekter i Python, kan du støde på fejl, især hvis det angivne format ikke matcher formatet for in­put­stren­gen. Her er nogle al­min­de­li­ge fejl og måder at løse dem på:

  • ValueError: time data '...' does not match format '...': Denne fejl opstår, hvis ind­tast­nings­stren­gen ikke svarer til det angivne format. Sørg for, at det korrekte for­mat­møn­ster blev brugt i strptime().
  • ValueError: unconverted data remains: Denne fejl vises, hvis der stadig er ufor­tol­ke­de data tilbage, efter at strengen er blevet behandlet. Sørg for, at for­mat­møn­ste­ret dækker alle dele af ind­tast­nings­stren­gen.
  • TypeError: strptime() argument 1 must be str, not ...: Dette kan ske, hvis den parameter, der overføres til strptime(), ikke er en streng. Sørg for, at den angivne værdi er en streng, der in­de­hol­der dato-/tids­for­ma­tet.

Du skal sikre dig, at for­mat­møn­ste­ret fortolker alle dele af ind­tast­nings­stren­gen korrekt (år, måned, dag, tid osv.). Det er også vigtigt at tage højde for mulige forskelle i se­pa­ra­to­rer, store bogstaver og andre detaljer mellem for­mat­møn­ste­ret og ind­tast­nings­stren­gen.

Gå til ho­ved­me­nu­en