Hvordan konvertere streng til Datetime i Python

Konvertering fra én type data til en annen type data er avgjørende i alle programmeringsspråk. Nesten alle programmeringsspråk støtter typekonverteringer for innebygde datatyper.

Tilpassede datatyper som datetime trenger ekstra moduler for konverteringer. Vi trenger moduler, spesielt for dato- og klokkeslettkonverteringer, siden det aldri har vært enkelt for programmerere å jobbe med dem. Heldigvis har python innebygde moduler for å jobbe med datetime.

Vi vil lære hvordan du konverterer en datetime-streng til et datetime-objekt i Python ved hjelp av forskjellige moduler. Før vi går inn i det, la oss se hvorfor vi må konvertere det i utgangspunktet.

Hvorfor må vi konvertere en datetime-streng til et datetime-objekt?

Når vi skal jobbe med datoer, er det ikke lett å jobbe hvis de er i strengformat. Konvertering av dem til datetime-format gjør det veldig enkelt å jobbe med dem. Datoer i strenger er som vanlige strenger. Den vil ikke ha noen spesielle metoder for å jobbe med datoer. Den vil ha generelle strengmetoder, som vi ikke trenger når vi jobber med datoer.

La oss si at vi må sammenligne to datoer. Hvis de er i strengformat, kan vi sammenligne dem riktig. Hvis de er i datetime-format, kan vi bruke sammenligningsoperatorene som tall.

Dette er bare ett scenario der konvertering til datetime-format gjør ting enkelt. Det er mange scenarier som å legge til datoer, trekke fra, håndtere tidssoner, etc., der konvertering av dato- og tidsstreng til date-tidsobjekt gjør livene våre enklere enn noen gang.

  Slik gjenoppretter du Venmo-kontoen din

Med det sagt, la oss se forskjellige måter å konvertere en datetime-streng til et datetime-objekt. Vi vil bruke innebygde datetime og tredjeparts dateutil-moduler for å konvertere datetime-strengen til datetime-objekt. La oss starte med datetime-modulen

Bruker dato og klokkeslett

Datetime er en innebygd modul i Python som brukes til å jobbe med datoer og klokkeslett. Det er mange klasser i denne modulen som hjelper oss å jobbe med datoer og klokkeslett. Vi vil bruke datetime.datetime-klassen for konverteringen.

Datetime.datetime har mange metoder. Vi er interessert i strptime-metoden som vil hjelpe oss i konverteringen. La oss sjekke det.

datetime.strptime

Datetime.strptime-metoden brukes til å konvertere datetime-strengen til et datetime-objekt. Det tar to strenger, den ene er datetime-strengen og den andre er formatet til den datetime-strengen. Og den returnerer datetime-objektet.

La oss se et eksempel

from datetime import datetime

string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))

Hvis du kjører koden ovenfor, vil du se følgende utgang.

2022-12-19 21:37:56

Vi har tatt en datetime-streng og konvertert den til datetime-objekt ved å bruke datetime.strptime-metoden. Sørg for at formatet du oppgir til metoden, samsvarer nøyaktig med dato- og klokkeslettstrengen. Hvis de ikke stemte, kan du få en feil eller feil utdata.

Vi har brukt noen formateringskoder for datetime-formatet. Du kan referere til alle formatkodene i dokumentene.

Datetime.strptime-metoden returnerer fullstendig datetime. Hvis du ønsker å få dato og klokkeslett separat, kan vi bruke dato- og klokkeslettmetodene til datetime-objektet. La oss se koden.

from datetime import datetime

string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"

## getting date separately
print("Date:", datetime.strptime(string, formatting).date())

## getting time separately
print("Time:", datetime.strptime(string, formatting).time())

Kjør koden ovenfor, og du vil se følgende utgang.

Date: 2022-12-19
Time: 21:37:56

Metodens dato og klokkeslett vil returnere objektene sine. De vil igjen ha sine respektive metoder for datoer og klokkeslett.

  18 typer nettkriminalitet bedrifter bør være klar over

Vi har gitt de riktige strengene og formatene for datetime.strptime-metoden som vi har sett ovenfor. Hvis vi ikke har gitt dem riktig, vil vi få feil. La oss se hvordan vi håndterer disse feilene. Kjør følgende kode.

from datetime import datetime

string = "19:12:2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))

Koden ovenfor vil gi en feil fordi formateringen ikke samsvarer med dato- og klokkeslettstrengen. For å håndtere denne typen feil kan vi bruke Pythons» try-except. La oss legge det til.

from datetime import datetime

try:
    string = "19:12:2022 09:37:56 PM"
    formatting = "%d-%m-%Y %I:%M:%S %p"
    print(datetime.strptime(string, formatting))
except ValueError as error:
    print(error)

Kjør koden på nytt. Du vil se følgende feilmelding uten å bryte koden.

time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'

På samme måte kan vi legge til try-unntatt for den kommende parser.parse-metoden også. Det hjelper oss å unngå å knekke koden i midten. Dette er ikke spesielt relatert til denne opplæringskonteksten, men det vil minne deg på å bruke det i koden din.

Det var alt for datetime-modulen. La oss gå til neste moduldatotil.

Bruker dateutil

Modulen dateutil gir utvidelser til datetime-modulen. Det gjør arbeidet med datoer og klokkeslett mye enklere med mange metoder med enkel bruk. La oss installere modulen med følgende kommando.

pip install python-dateutil

Metoden vi er interessert i er dateutil.parser.parse. La oss se hvordan du konverterer datetime-streng til datetime-objekt.

  Optimaliser utgående anrop med prediktiv og automatisert oppringingsprogramvare

parser.parse

Metoden parser.parse vil ta en datetime-streng og konvertere den til et respektive datetime-objektformat. Vi trenger ikke å oppgi noen formatering for denne metoden. Den vil automatisk konvertere den gitte datetime-strengen til datetime-objekt. La oss se et eksempel.

from dateutil import parser

string = "19-12-2022 09:37:56 PM"
print(parser.parse(string))

Hvis du kjører koden ovenfor, vil du se følgende utgang.

2022-12-19 21:37:56

Datetime-strengen må være i et bestemt format som parser.parse-metoden godtar. Det vil gi en feil hvis datetime-strengformatet ikke er som ønsket format. Du kan sjekke alle dato- og klokkeslettstrengformatene som den godtar for automatiske konverteringer.

Ettersom parser.parse-metoden returnerer datetime-objekt, kan vi få tilgang til dato- og klokkeslettobjektene separat, slik vi har sett med datetime-modulen. La oss se koden.

from dateutil import parser

string = "19-12-2022 09:37:56 PM"
print("Date:", parser.parse(string).date())
print("Time:", parser.parse(string).time())

Du kan se utdataene nedenfor hvis du kjører koden ovenfor.

Date: 2022-12-19
Time: 21:37:56

Som du kan se gjør dateutil det lettere å jobbe med datoer og klokkeslett sammenlignet. Du kan utforske modulen i dokumentene.

Konklusjon

Vi har brukt en innebygd modul og en tredjepartsmodul for å konvertere datetime-strengen til et DateTime-objekt. Det er en annen innebygd modul kalt tid som vi kan konvertere datetime-strengen til et DateTime-objekt som ligner på datetime og dateutil-moduler. Prøv det selv. Det vil ikke være vanskelig siden du allerede har gjort en lignende ting med andre moduler.

Det kan være flere biblioteker som vi kan oppnå det samme med. Modulene som vi har brukt i tingopplæringen er standard og mye brukt. Du kan utforske mer om andre moduler og velge den som passer best for deg.

Du kan også utforske hvordan du beregner tidsforskjell i python.

Lykke til med koding 🙂