Datetime-objecten maken een­vou­di­ge tijd­be­re­ke­nin­gen mogelijk, waaronder het optellen of aftrekken van in­ter­val­len. Het omzetten van strings naar datetime-objecten is es­sen­ti­eel voor het nauw­keu­rig or­ga­ni­se­ren, ana­ly­se­ren en weergeven van tijd­ge­ge­vens in Python.

Hoe werkt het omzetten van strings naar datetime in Python?

Het con­ver­te­ren van een Python-string naar datetime houdt in dat een tekstreeks, die een datum en/of tijd bevat, wordt omgezet in een datetime-object. Datetime is een Python-ge­ge­vens­struc­tuur die is ontworpen om datum- en tijd­in­for­ma­tie te verwerken en aan te passen. Het con­ver­te­ren van strings naar datetime is vaak nodig om datum- en tijd­ge­ge­vens te verwerken die in string­for­maat worden weer­ge­ge­ven.

De gegevens worden omgezet naar een formaat dat onder andere kan worden gebruikt om be­re­ke­nin­gen uit te voeren, datums te ver­ge­lij­ken of tijd­in­for­ma­tie op te maken. Methoden voor het sa­men­voe­gen van ex­pres­sies met behulp van Python-string­for­maat kunnen ook nuttig zijn bij het beheren van datetime-objecten.

Hoe strings omzetten naar datetime-objecten in Python

Er zijn ver­schil­len­de functies en modules, zoals de datetime library en de strptime() method, die u kunt gebruiken om strings om te zetten naar datetime-objecten en vice versa.

strptime()

De methode strptime() (string parse time) uit de bi­bli­o­theek datetime wordt gebruikt om een string om te zetten in een Python datetime-object. Er zijn twee ar­gu­men­ten nodig: de string die moet worden ge­par­seerd en het datum-/tijd­for­maat van de string.

datetime.strptime(date_string, format)
python

datetime.datetime()

Met de strptime() methode kan een te­ken­reeks worden omgezet in een datetime.datetime, waarbij rekening wordt gehouden met een spe­ci­fie­ke datum-/tijd­no­ta­tie.

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

In dit voorbeeld wordt date_string ge­spe­ci­fi­ceerd als '2023-10-30 12:00:00' en de­fi­ni­eert het formaat '%Y-%m-%d %H:%M:%S' de volgorde en hoe de datum en tijd in de te­ken­reeks moeten worden weer­ge­ge­ven. De methode strptime() in­ter­pre­teert de te­ken­reeks op basis van dit formaat en genereert een datetime.datetime, dat ver­vol­gens wordt op­ge­sla­gen in de variabele date_object.

Dit is wat '%Y-%m-%d %H:%M:%S' betekent:

  • %Y: Vier­cij­fe­rig jaartal
  • %m: Twee cijfers voor de maand
  • %d: Twee cijfers voor de dag
  • %H: Uur (24-uurs­no­ta­tie)
  • %M: Minuten
  • %S: Seconden

datetime.time()

Door strings om te zetten in een datetime.time, kun je tijden zonder datum weergeven. Dit kan worden gedaan met behulp van de strptime() uit de datetime, of door een tijd­string op te splitsen in uren, minuten en seconden.

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' staat voor het formaat uren:minuten:seconden. De methode strptime() in­ter­pre­teert de tijd­string volgens dit formaat en maakt een datetime.time aan.

datetime.date()

Als al­ter­na­tief kunt u een te­ken­reeks omzetten in een datetime.date door de strptime() uit de datetime te gebruiken, of door de da­tum­te­ken­reeks handmatig op te splitsen in jaar-, maand- en dag­com­po­nen­ten.

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' is het jaar-maand-dag­for­maat. De strptime() ana­ly­seert de da­tum­string en maakt een datetime.date aan.

Hoe strptime() fouten op te lossen

Wanneer u de strptime() -methode gebruikt om strings om te zetten naar datetime-objecten in Python, kunt u fouten te­gen­ko­men, vooral als het opgegeven formaat niet over­een­komt met het formaat van de in­voer­string. Hier volgen enkele veel­voor­ko­men­de fouten en manieren om ze op te lossen:

  • ValueError: time data '...' does not match format '...': Deze fout treedt op als de in­voer­reeks niet over­een­komt met het opgegeven formaat. Con­tro­leer of het juiste for­maat­pa­troon is gebruikt in strptime().
  • ValueError: unconverted data remains: Deze fout­mel­ding wordt weer­ge­ge­ven als er na ver­wer­king van de te­ken­reeks nog niet-ge­ïn­ter­pre­teer­de gegevens over­blij­ven. Zorg ervoor dat het for­maat­pa­troon alle delen van de in­voer­te­ken­reeks omvat.
  • TypeError: strptime() argument 1 must be str, not ...: Dit kan gebeuren als de parameter die is door­ge­ge­ven aan strptime() geen te­ken­reeks is. Zorg ervoor dat de opgegeven waarde een te­ken­reeks is die het datum-/tijd­for­maat bevat.

U moet ervoor zorgen dat het for­maat­pa­troon alle delen van de in­voer­reeks (jaar, maand, dag, tijd, enz.) correct in­ter­pre­teert. Het is ook be­lang­rijk om rekening te houden met mogelijke ver­schil­len in schei­dings­te­kens, hoofd­let­ters en andere details tussen het for­maat­pa­troon en de in­voer­reeks.

Ga naar hoofdmenu