Sådan konverteres en streng til datetime i Python
Datetime-objekter muliggør enkle tidsberegninger, herunder tilføjelse eller fratrækning af intervaller. Konvertering af strenge til datetime-objekter er afgørende for nøjagtig organisering, analyse og visning af tidsdata i Python.
Hvordan fungerer konvertering af strenge til datetime i Python?
Konvertering af en Python-streng til datetime indebærer omdannelse af en tekststreng, der indeholder en dato og/eller et klokkeslæt, til et datetime-objekt. Datetime er en Python-datastruktur, der er designet til at håndtere og justere dato- og tidsoplysninger. Konvertering af strenge til datetime er ofte nødvendigt for at håndtere dato- og tidsdata, der vises i strengformat.
Dataene konverteres til et format, der blandt andet kan bruges til at udføre beregninger, foretage dato-sammenligninger eller formatere tidsoplysninger. Metoder til sammenkædning af udtryk ved hjælp af Python-strengformat kan også være nyttige, når man administrerer datetime-objekter.
Sådan konverteres strenge til datetime-objekter i Python
Der findes forskellige funktioner og moduler, såsom biblioteket datetime og metoden strptime(), som du kan bruge til at konvertere strenge til datetime-objekter og omvendt.
strptime()
Metoden strptime() (string parse time) fra biblioteket datetime bruges til at konvertere en streng til et Python datetime-objekt. Der kræves to argumenter: den streng, der skal parsers, og strengens dato-/tidsformat.
datetime.strptime(date_string, format)pythondatetime.datetime()
Med metoden strptime() kan en streng konverteres til et objekt datetime.datetime under hensyntagen til et bestemt 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:00pythonI dette eksempel er date_string angivet som '2023-10-30 12:00:00', og formatet '%Y-%m-%d %H:%M:%S' definerer rækkefølgen og hvordan datoen og klokkeslættet skal vises i strengen. Metoden strptime() fortolker strengen baseret på dette format og genererer et datetime.datetime objekt, som efterfølgende gemmes i variablen date_object.
Her er hvad '%Y-%m-%d %H:%M:%S' betyder:
%Y: Firecifret årstal%m: Tocifrede måned%d: To-cifret dag%H: Time (24-timers format)%M: Minutter%S: Sekunder
datetime.time()
Ved at konvertere strenge til et datetime.time kan du repræsentere tidspunkter uden en dato. Dette kan gøres ved hjælp af strptime() fra datetime eller ved at opdele en tidsstreng 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:00python'%H:%M:%S' står for formatet timer:minutter:sekunder. Metoden strptime() fortolker tidsstrengen i henhold til dette format og opretter et datetime.time -objekt.
datetime.date()
Alternativt kan du omdanne en streng til et datetime.date jekt ved at bruge strptime() oden fra datetime eller ved manuelt at opdele datostrengen 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-30python'%Y-%m-%d' er formatet år-måned-dag. Metoden strptime() analyserer datostrengen og opretter et datetime.date -objekt.
Sådan løses strptime() fejl
Når du bruger strptime() til at konvertere strenge til datetime-objekter i Python, kan du støde på fejl, især hvis det angivne format ikke matcher formatet for inputstrengen. Her er nogle almindelige fejl og måder at løse dem på:
ValueError: time data '...' does not match format '...': Denne fejl opstår, hvis indtastningsstrengen ikke svarer til det angivne format. Sørg for, at det korrekte formatmønster blev brugt istrptime().ValueError: unconverted data remains: Denne fejl vises, hvis der stadig er ufortolkede data tilbage, efter at strengen er blevet behandlet. Sørg for, at formatmønsteret dækker alle dele af indtastningsstrengen.TypeError: strptime() argument 1 must be str, not ...: Dette kan ske, hvis den parameter, der overføres tilstrptime(), ikke er en streng. Sørg for, at den angivne værdi er en streng, der indeholder dato-/tidsformatet.
Du skal sikre dig, at formatmønsteret fortolker alle dele af indtastningsstrengen korrekt (år, måned, dag, tid osv.). Det er også vigtigt at tage højde for mulige forskelle i separatorer, store bogstaver og andre detaljer mellem formatmønsteret og indtastningsstrengen.