String converteren naar Datetime in Python

Het converteren van het ene type gegevens naar het andere type gegevens is cruciaal in elke programmeertaal. Bijna alle programmeertalen ondersteunen typeconversies voor ingebouwde gegevenstypen.

Aangepaste gegevenstypen zoals datetime hebben extra modules nodig voor conversies. We hebben modules nodig, vooral voor datum/tijd-conversies, omdat het voor programmeurs nog nooit zo gemakkelijk was om eraan te werken. Gelukkig heeft Python ingebouwde modules om met datetime te werken.

We zullen leren hoe we een datetime-string kunnen converteren naar een datetime-object in Python met behulp van verschillende modules. Voordat we daarop ingaan, laten we eens kijken waarom we het in de eerste plaats moeten converteren.

Waarom moeten we een datetime-tekenreeks converteren naar een datetime-object?

Als we met datums moeten werken, is het niet gemakkelijk om te werken als ze in stringformaat zijn. Door ze om te zetten naar het datum/tijd-formaat is het heel gemakkelijk om ermee te werken. Datums in strings zijn als normale strings. Het heeft geen speciale methoden om met datums te werken. Het zal algemene stringmethoden hebben, die we niet nodig hebben bij het werken met datums.

Laten we zeggen dat we twee datums moeten vergelijken. Als ze in stringformaat zijn, kunnen we ze correct vergelijken. Als ze de datum/tijd-indeling hebben, kunnen we de vergelijkingsoperatoren zoals getallen gebruiken.

Dit is slechts één scenario waarbij het converteren naar het datum/tijd-formaat het u gemakkelijk maakt. Er zijn tal van scenario’s, zoals het toevoegen van datums, het aftrekken, het omgaan met tijdzones, enz., Waar het converteren van een datetime-string naar een datetime-object ons leven gemakkelijker dan ooit maakt.

Met dat gezegd, laten we eens kijken naar verschillende manieren om een ​​datetime-string om te zetten in een datetime-object. We zullen ingebouwde datetime en dateutil-modules van derden gebruiken om de datetime-string naar datetime-object te converteren. Laten we beginnen met de datetime-module

  Wat te doen als uw pc niet in slaapstand gaat

Datumtijd gebruiken

De datetime is een ingebouwde module van Python die wordt gebruikt om met datums en tijden te werken. Er zijn veel lessen in deze module die ons helpen om met datums en tijd te werken. We zullen de klasse datetime.datetime gebruiken voor de conversie.

De datetime.datetime heeft veel methoden. We zijn geïnteresseerd in de strptime-methode die ons zal helpen bij de conversie. Laten we het controleren.

datetime.strptime

De methode datetime.strptime wordt gebruikt om de datetime-string om te zetten in een datetime-object. Er zijn twee strings voor nodig, de ene is een datetime-string en de andere is het formaat van die datetime-string. En het retourneert het datetime-object.

Laten we een voorbeeld bekijken

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))

Als u de bovenstaande code uitvoert, ziet u de volgende uitvoer.

2022-12-19 21:37:56

We hebben een datetime-tekenreeks genomen en deze geconverteerd naar een datetime-object met de methode datetime.strptime. Zorg ervoor dat de indeling die u aan de methode verstrekt, exact overeenkomt met de datetime-tekenreeks. Als ze niet overeenkomen, krijgt u mogelijk een foutmelding of onjuiste uitvoer.

We hebben enkele opmaakcodes gebruikt voor het datum/tijd-formaat. U kunt verwijzen naar alle indelingscodes in de documenten.

De methode datetime.strptime retourneert volledige datetime. Als u de datum en tijd afzonderlijk wilt ophalen, kunnen we de datum-tijdmethoden van het datetime-object gebruiken. Laten we de code bekijken.

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())

Voer de bovenstaande code uit en u ziet de volgende uitvoer.

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

De methodes date en time zullen respectievelijk hun objecten teruggeven. Ze zullen weer hun respectieve methoden voor datums en tijden hebben.

We hebben de juiste tekenreeksen en indelingen opgegeven voor de methode datetime.strptime die we hierboven hebben gezien. Als we ze niet correct hebben opgegeven, krijgen we fouten. Laten we eens kijken hoe we met die fouten kunnen omgaan. Voer de volgende code uit.

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))

De bovenstaande code genereert een fout omdat de opmaak niet overeenkomt met de datetime-tekenreeks. Om dit soort fouten op te lossen, kunnen we de try-except van Python gebruiken. Laten we het toevoegen.

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)

Voer de code nu opnieuw uit. U ziet het volgende foutbericht zonder de code te breken.

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

Op dezelfde manier kunnen we ook de try-except voor de coming parser.parse methode toevoegen. Het helpt ons om te voorkomen dat de code halverwege wordt verbroken. Dit is niet specifiek gerelateerd aan deze zelfstudiecontext, maar het zal u eraan herinneren om het in uw code te gebruiken.

  Fix Forza Horizon FH5-fout 0x803FB107

Dat is het voor de datetime-module. Laten we naar de volgende module dateutil gaan.

Datedutil gebruiken

De module dateutil biedt uitbreidingen op de datetime-module. Het maakt het werken met datums en tijden een stuk eenvoudiger met veel methoden met eenvoudig gebruik. Laten we de module installeren met de volgende opdracht.

pip install python-dateutil

De methode waarin we geïnteresseerd zijn, is dateutil.parser.parse. Laten we eens kijken hoe we een datetime-string naar een datetime-object kunnen converteren.

parser.ontleden

De methode parser.parse neemt een datetime-tekenreeks en converteert deze naar een respectief datetime-objectformaat. We hoeven geen opmaak voor deze methode op te geven. Het zal de gegeven datetime-string automatisch converteren naar een datetime-object. Laten we een voorbeeld bekijken.

from dateutil import parser

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

Als u de bovenstaande code uitvoert, ziet u de volgende uitvoer.

2022-12-19 21:37:56

De datetime-tekenreeks moet een bepaalde indeling hebben die door de methode parser.parse wordt geaccepteerd. Er wordt een fout gegenereerd als het formaat van de datum/tijd-tekenreeks niet overeenkomt met het gewenste formaat. U kunt alle tekenreeksindelingen voor datum en tijd controleren die worden geaccepteerd voor automatische conversies.

  Heeft u een monitor met hoge verversingssnelheid nodig voor kantoorwerk?

Omdat de methode parser.parse het datetime-object retourneert, hebben we afzonderlijk toegang tot de datum- en tijdobjecten, zoals we hebben gezien met de datetime-module. Laten we de code bekijken.

from dateutil import parser

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

U kunt de onderstaande uitvoer zien als u de bovenstaande code uitvoert.

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

Zoals u kunt zien, maakt dateutil het gemakkelijker om relatief met datums en tijden te werken. U kunt de module verkennen in de documenten.

Conclusie

We hebben een ingebouwde module en een module van derden gebruikt om de datetime-string om te zetten in een DateTime-object. Er is nog een ingebouwde module genaamd time waarmee we de datetime-string kunnen converteren naar een DateTime-object vergelijkbaar met de modules datetime en dateutil. Probeer het zelf. Het zal niet moeilijk zijn, aangezien je al iets soortgelijks hebt gedaan met andere modules.

Er zijn wellicht meer bibliotheken waarmee we hetzelfde kunnen bereiken. De modules die we in thing tutorial hebben gebruikt zijn standaard en worden veel gebruikt. U kunt meer ontdekken over andere modules en de beste kiezen die bij u past.

U kunt ook onderzoeken hoe u het tijdsverschil in python kunt berekenen.

Veel plezier met coderen 🙂

gerelateerde berichten