Ga naar hoofdinhoud

Python String naar DateTime: zo zet je strings om naar DateTime-objecten

Leer hoe je strings omzet naar datetime-objecten in Python met strptime(), dateutil en pandas, inclusief praktische codevoorbeelden.
Bijgewerkt 1 jun 2026  · 8 min lezen

In Python zijn strings een veelgebruikt datatype om datums en tijden weer te geven, maar als data scientists en engineers moeten we deze strings vaak omzetten naar datetime-objecten om allerlei bewerkingen uit te voeren, zoals sorteren of vergelijken.

Strings omzetten naar datetime-objecten kan lastig zijn, zeker als je nieuw bent met Python. In dit artikel neem ik je stap voor stap mee door de benodigde methoden, met codevoorbeelden onderweg. Of je nu een doorgewinterde developer bent of net begint aan je reis: duik met me mee in de wereld van datetime-objecten in Python!

Wil je alle voorbeeldcode in deze tutorial zelf gemakkelijk draaien? Maak gratis een DataLab-werkboek aan met Python voorgeïnstalleerd en alle codevoorbeelden inbegrepen. Voor extra oefening met het omzetten van strings naar datetime-objecten kun je deze praktische DataCamp-oefening doen.

TL;DR

Gebruik datetime.strptime(date_string, format) om strings naar datetime-objecten in Python om te zetten. Voor flexibel parsen zonder format strings gebruik je dateutil.parser.parse(). Voor DataFrames verwerkt pd.to_datetime() complete kolommen efficiënt. Belangrijke formateringcodes: %Y (4-cijferig jaar), %m (maand), %d (dag), %H (uur), %M (minuut), %S (seconde).

Introductie tot de Python datetime-module

De datetime-module, die standaard bij Python zit, kun je gebruiken zodra je met datums, tijden of tijdsintervallen moet werken in toepassingen die je met Python bouwt. De module biedt handige classes en methoden om datum- en tijdgegevens te representeren en te bewerken.

Tabel 1: Overzicht van classes en methoden in de datetime-module

Class/Methode Doel Veelvoorkomende use-cases
datetime.date Representeert een datum (jaar, maand, dag). Verschillen tussen datums berekenen, datums als strings formatteren, datumcomponenten extraheren.
datetime.time Representeert een tijdstip (uur, minuut, seconde, microseconde). Tijden vergelijken, tijden als strings formatteren, tijdcomponenten extraheren.
datetime.datetime Representeert datum en tijd. Combineert date en time functionaliteiten. Werken met tijdreeksdata, datum- en tijdcomponenten extraheren, formatteren als strings.
datetime.timedelta Representeert het verschil tussen twee datums of tijden (duur). Duraties optellen/aftrekken bij datums of tijden, tijdsintervallen berekenen.
datetime.strptime() Parseert een string naar een datetime object op basis van een opgegeven formaat. Strings omzetten naar datetime objecten voor verdere bewerking en analyse.
datetime.strftime() Formatteert een datetime object naar een string op basis van een opgegeven formaat.  datetime objecten omzetten naar leesbare strings voor weergave of rapportage.

Laten we de belangrijkste classes in deze module begrijpen, want we gaan ze omzetten naar datetime-objecten:

1. datetime.date

Deze class representeert een datum (jaar, maand en dag) en biedt methoden om met datums te werken, zoals het berekenen van het verschil tussen twee datums en het formatteren van datums als strings.

Stel dat we een dataset hebben met de dagelijkse aandelenkoersen van een bedrijf. We kunnen de date-class gebruiken om de datums uit de dataset te halen en de koersen in de tijd te plotten.

Hier is een snippet die het gebruik van de date-class laat zien:

from datetime import date

# create a date object representing March 1, 2023
start_date = date(2023, 3, 1)

# extract information such as the year, month, and day
year = start_date.year
month = start_date.month
day = start_date.day

# get the day of the week (Note: Monday is coded as 0, and Sunday as 6)
weekday = start_date.weekday()

# the date can be formatted as a string if needed
date_str = start_date.strftime('%Y-%m-%d')

2. datetime.time

Deze class representeert een tijdstip (uur, minuut, seconde en microseconde) en biedt methoden om met tijden te werken, zoals tijden vergelijken en ze als strings formatteren.

Stel dat we een dataset hebben met de eindtijden van een race; we kunnen de time-class gebruiken om de uren en minuten van elke deelnemer die finishte te extraheren.

from datetime import time

# create a time object with the microsecond granularity
end_time = time(15, 45, 30, 500000)

# get the hour and minute
hour = end_time.hour
minute = end_time.minute
second = end_time.second
microsecond = end_time.microsecond

3. datetime.datetime

Deze class representeert een datum en tijd en biedt methoden om met beide te werken. Het combineert de functionaliteit van de classes date en time.

Deze wordt vaak gebruikt bij data-analysetaken met tijdreeksdata met een hoge temporele resolutie, zoals uurlijkse of minuutdata. Stel dat we een dataset hebben met de uurlijkse elektriciteitsvraag van een stad. We kunnen de datetime-class gebruiken om datum en tijd uit de dataset te halen en de elektriciteitsvraag in de tijd te plotten. Voor het visualiseren van zulke data, zie onze tutorial Matplotlib time series line plot.

from datetime import datetime

# create a datetime object representing March 1, 2023 at 9:30 AM
start_datetime = datetime(2023, 3, 1, 9, 30)

# get the year, month, day, hour, and minute
year = start_datetime.year
month = start_datetime.month
day = start_datetime.day
hour = start_datetime.hour
minute = start_datetime.minute

4. datetime.timedelta

Deze class representeert een duur of tijdsinterval en biedt methoden om met intervallen te werken, zoals het optellen of aftrekken van tijdsintervallen bij datums of tijden.

Stel dat we een dataset hebben met de start- en eindtijden van een reeks events en we de totale duur van alle events willen berekenen. We kunnen de timedelta-class gebruiken om de duur van elk event te berekenen en ze op te tellen.

from datetime import timedelta

# create a timedelta object representing 3 hours and 15 minutes
event_duration = timedelta(hours=3, minutes=15)

# get the total duration in seconds
event_duration_seconds = event_duration.total_seconds()

# add the duration to a start time to get an end time
event_start_time = datetime(2023, 3, 1, 18, 15)
event_end_time = event_start_time + event_duration

In al deze voorbeelden gebruikten we datetime-objecten, maar in de praktijk staan echte data vaak als string. Door te converteren naar een datetime-object ontgrendel je al deze functionaliteiten, die krachtig zijn in data-analyse en toepassingen.

Datetime-conversie met datetime.strptime()

In Python kunnen we de methode datetime.strptime() gebruiken om een string naar een datetime-object om te zetten. De methode strptime() neemt twee argumenten: de string die je wilt converteren en een format string die het formaat van de invoerstring specificeert.

De format string gebruikt een combinatie van formateringscodes om de verschillende componenten van datum en tijd weer te geven. Hier zijn enkele van de meest gebruikte codes (vergelijkbare concepten gelden bij Python string formatting):

Tabel 2: Veelgebruikte datetime-formateringscodes

Formatcode Beschrijving Voorbeeldinvoer Voorbeelduitvoer
%Y 4-cijferig jaar 2023 2023
%y 2-cijferig jaar 23 23
%m 2-cijferige maand (01-12) 03 03
%d 2-cijferige dag van de maand (01-31) 15 15
%H 2-cijferig uur (00-23) 14 14
%I 2-cijferig uur (01-12) 02 02
%M 2-cijferige minuut (00-59) 45 45
%S 2-cijferige seconde (00-59) 30 30
%f Microseconde (000000-999999) 123456 123456
%p AM of PM PM PM
%z UTC-offset +0530 +0530
%a Afgekorte weekdagnaam Tue Tue
%A Volledige weekdagnaam Tuesday Tuesday
%b Afgekorte maandnaam Mar Mar
%B Volledige maandnaam March March
%j Dag van het jaar (001-366) 074 074
%U Weeknummer van het jaar (zondag als eerste dag) 10 10
%W Weeknummer van het jaar (maandag als eerste dag) 09 09

Nu we de strptime-directives begrijpen, wordt het proces om strings naar datetime-objecten te converteren eenvoudiger.

  • Stap 01: Analyseer de datum-tijdstring op patronen die overeenkomen met de formateringcodes.
  • Stap 02: Stel het datum-tijdformaat samen met de strptime()-directives.
  • Stap 03: Geef de string en het formaat door aan de functie en ontvang het object als output.

Laten we deze stappen in de praktijk brengen.

Een string in een specifiek formaat omzetten naar een datetime-object

from datetime import datetime

# Example with the standard date and time format
date_str = '2023-02-28 14:30:00'
date_format = '%Y-%m-%d %H:%M:%S'

date_obj = datetime.strptime(date_str, date_format)
print(date_obj)

# Example with a different format

date_str = '02/28/2023 02:30 PM'
date_format = '%m/%d/%Y %I:%M %p'

date_obj = datetime.strptime(date_str, date_format)
print(date_obj)

In het eerste voorbeeld hebben we een string die een datum en tijd voorstelt in het formaat ‘YYYY-MM-DD HH:MM:SS’, en in het tweede voorbeeld een ander formaat: ‘MM/DD/YYYY HH:MM AM/PM’.

In beide gevallen specificeren we de juiste format string als tweede argument van strptime() om het correcte datetime-object te krijgen.

Een string met tijdzone-informatie omzetten naar een datetime-object

from datetime import datetime

date_str = '2023-02-28 14:30:00+05:30'
date_format = '%Y-%m-%d %H:%M:%S%z'

date_obj = datetime.strptime(date_str, date_format)
print(date_obj)

In dit voorbeeld hebben we een string die een datum en tijd met tijdzone-informatie voorstelt in het formaat ‘YYYY-MM-DD HH:MM:SS+TZOFFSET’, waarbij TZOFFSET de tijdzone-offset in uren en minuten vanaf UTC is. We geven de format string als tweede argument aan strptime(), inclusief de %z-formateringscode om de tijdzone-offset te parsen.

Hoewel de functie hierboven in theorie eenvoudig lijkt, kan ze in de praktijk frustrerend zijn als er iets misgaat.

Datums parsen zonder format strings met dateutil

Een andere flexibele optie is de dateutil-bibliotheek, met name de functie parser.parse(). Die detecteert automatisch datumformaten, zodat je strings kunt parsen zonder een format string op te geven.

from dateutil.parser import parse

# Automatically infers the format
date_obj = parse("March 1, 2023 9:30 AM")
print(date_obj)

Dit is vooral handig bij onvoorspelbare of inconsistente datumformaten.

Tijdzones verwerken

Voor tijdzone-bewuste datetime-verwerking heeft Python twee populaire opties:

  • pytz (veelgebruikt en compatibel met oudere versies)

  • zoneinfo (geïntroduceerd in Python 3.9, onderdeel van de standaardbibliotheek)

from datetime import datetime
from zoneinfo import ZoneInfo

# Using zoneinfo
dt = datetime(2023, 3, 1, 9, 30, tzinfo=ZoneInfo("America/New_York"))
print(dt)

# Using pytz (alternative)
import pytz
tz = pytz.timezone("America/New_York")
dt_pytz = tz.localize(datetime(2023, 3, 1, 9, 30))
print(dt_pytz)

Met deze tools kun je tijdzones toekennen, ertussen converteren en automatisch rekening houden met de zomertijd.

Overwegingen rond zomertijd

Bij tijdzone-bewuste datetimes kan zomertijd (DST) complicaties veroorzaken—zeker wanneer de klok vooruit of achteruit gaat.

Bibliotheken zoals zoneinfo en pytz beheren DST-overgangen automatisch wanneer je de juiste tijdzone toekent:

from datetime import datetime
from zoneinfo import ZoneInfo

# Before and after DST starts
before_dst = datetime(2023, 3, 12, 1, 30, tzinfo=ZoneInfo("America/New_York"))
after_dst = datetime(2023, 3, 12, 3, 30, tzinfo=ZoneInfo("America/New_York"))

print(before_dst)
print(after_dst)

Zo blijven datetime-berekeningen accuraat tijdens DST-wijzigingen.

Datetime-conversie met pandas

Hoewel de ingebouwde datetime-module van Python krachtig is, geven veel data scientists de voorkeur aan de pandas-bibliotheek voor datetime-conversies vanwege de eenvoud en het vermogen om complete kolommen met datums efficiënt te verwerken met DataFrames.

import pandas as pd

# Converting a column of strings to datetime objects
date_series = pd.to_datetime(['2023-02-28', '2023-03-01', '2023-03-02'])
print(date_series)

Pandas leidt formaten automatisch af en gaat soepel om met veelvoorkomende inconsistenties, waardoor het een favoriete keuze is bij tabeldata. Leer meer in onze gids Data Preparation with pandas.

Datetime-objecten formatteren naar strings met strftime()

Als je strings hebt omgezet naar datetime-objecten en je gewenste bewerkingen hebt uitgevoerd, kan het nodig zijn ze weer terug te zetten naar strings. Gebruik hiervoor datetime.strftime().

from datetime import datetime

now = datetime.now()
formatted = now.strftime('%Y-%m-%d %H:%M:%S')
print(formatted)

Met deze methode bepaal je volledig hoe je datetime-object als string wordt weergegeven.

Veelvoorkomende strptime()-fouten oplossen

Hier zijn een paar veelvoorkomende fouten en hoe je ze oplost. Voor meer over exception handling in Python kun je onze aparte tutorial bekijken:

ValueError: time data 'date_string' does not match format '%Y-%m-%d %H:%M:%S'

De meest voorkomende fout treedt op wanneer de invoerstring niet overeenkomt met de format string. Controleer of de invoerstring en de format string exact overeenkomen.

import datetime

# When using 4-digit year format but input has 2-digit year
date_str = '23-03-01'
date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')  # Wrong: %Y expects 4 digits
# Raises ValueError: time data '23-03-01' does not match format '%Y-%m-%d'

# When format doesn't match separator in string
time_str = '08:30:00'
time_obj = datetime.datetime.strptime(time_str, '%H-%M-%S')  # Wrong: using - instead of :
# Raises ValueError: time data '08:30:00' does not match format '%H-%M-%S'

TypeError: strptime() argument 1 must be str, not 'int'

De volgende veelvoorkomende fout treedt op als je een integer doorgeeft aan datetime.strptime() of time.strptime() in plaats van een string. Zorg dat alle waarden die je aan de functie doorgeeft strings zijn.

# Example 1: Integer instead of string
date_int = 20230301
date_obj = datetime.datetime.strptime(date_int, '%Y%m%d')
# Raises TypeError: strptime() argument 1 must be str, not int

# Example 2: List instead of string
date_list = [2023, 3, 1]
date_obj = datetime.datetime.strptime(date_list, '%Y-%m-%d')
# Raises TypeError: strptime() argument 1 must be str, not list

ValueError: unconverted data remains: ':00'

Deze fout treedt op wanneer er resterende tekens in de invoerstring staan die niet door de format string worden afgedekt. Deze fout ontstaat bijvoorbeeld als de format string alleen jaar, maand en dag specificeert, maar de invoerstring ook een tijdstip bevat. Zorg ervoor dat de format string de volledige invoerstring dekt om dit te debuggen.

# when input string contains time of day
date_str = '2023-03-01 12:30:00'
date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')
# Raises ValueError: unconverted data remains:  12:30:00

# When input string contains extra characters
date_str = '2023-03-01T00:00:00Z'
date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')
# Raises ValueError: unconverted data remains: T00:00:00Z

Conclusie

Het is veilig om te zeggen dat de methode datetime.strptime() een flexibele en krachtige manier biedt om strings om te zetten naar datetime-objecten in Python, en dat je er een brede waaier aan datum- en tijdformaten mee kunt verwerken. Download gerust onze Dates and Times Cheatsheet voor later naslagwerk.

Nadat je datums en tijden begrijpt, is de volgende stap om ze te oefenen in een project. We raden je aan om er een van deze te kiezen en je kennis te versterken:

We zijn het erover eens dat datum- en tijdgegevens in de echte wereld complex zijn, maar het komt erop neer dat je de formaten en patronen achter elk type datum en tijd in je data begrijpt en je bibliotheken verstandig gebruikt.

FAQs

Hoe kan ik strings met gemengde datumformaten in dezelfde dataset verwerken?

Als je werkt met datasets die gemengde datumformaten bevatten, kun je Python’s dateutil-module gebruiken. De functie dateutil.parser.parse() is flexibeler dan datetime.strptime() omdat deze automatisch verschillende datumformaten kan detecteren en parsen zonder dat een vooraf gedefinieerde format string nodig is:

from dateutil.parser import parse

date_str1 = '2023-03-01'
date_str2 = 'March 1, 2023'

date_obj1 = parse(date_str1)
date_obj2 = parse(date_str2)

print(date_obj1)  # Output: 2023-03-01 00:00:00
print(date_obj2)  # Output: 2023-03-01 00:00:00

Kan ik strings omzetten naar datetime-objecten met rekening houdend met verschillende tijdzones?

Ja, je kunt tijdzones verwerken met de pytz-bibliotheek in combinatie met datetime. Zet eerst de string om naar een datetime-object en koppel vervolgens een tijdzone met pytz.timezone():

from datetime import datetime
import pytz

date_str = '2023-03-01 14:30:00'
date_format = '%Y-%m-%d %H:%M:%S'
date_obj = datetime.strptime(date_str, date_format)

# Set time zone
timezone = pytz.timezone('US/Eastern')
date_obj_tz = timezone.localize(date_obj)

print(date_obj_tz)  # Output: 2023-03-01 14:30:00-05:00

Wat is het verschil tussen datetime.strptime() en datetime.fromisoformat()?

datetime.strptime() laat je een aangepaste format string opgeven om niet-standaard of uiteenlopende datumformaten te parsen.

datetime.fromisoformat() is specifiek ontworpen om ISO 8601-geformatteerde datumstrings te parsen (bijv. '2023-03-01T14:30:00'). Dit is eenvoudiger als je strings strikt de ISO 8601-standaard volgen:

from datetime import datetime

iso_date_str = '2023-03-01T14:30:00'
date_obj = datetime.fromisoformat(iso_date_str)
print(date_obj)  # Output: 2023-03-01 14:30:00

Hoe zet ik in Python een datetime-object terug om naar een string?

Gebruik de methode strftime() om een datetime-object terug om te zetten naar een string. Geef een format string door die bepaalt hoe de output eruitziet:

from datetime import datetime

dt = datetime(2023, 3, 1, 14, 30)
date_string = dt.strftime('%Y-%m-%d %H:%M:%S')
print(date_string)  # Output: 2023-03-01 14:30:00

De formateringscodes zijn hetzelfde als die bij strptime(), waardoor round-trippen tussen strings en datetime-objecten eenvoudig is.

Wat is het verschil tussen strptime() en strftime() in Python?

strptime() en strftime() zijn elkaars tegenovergestelde bewerkingen:

  • strptime() ("string parse time") zet een string om naar een datetime-object. Het neemt een string en een formaat als argumenten.
  • strftime() ("string format time") zet een datetime-object om naar een string. Het formatteert de datetime volgens een opgegeven format string.

Handig ezelsbruggetje: strptime() parseert strings, terwijl strftime() formatteert naar strings.


Arunn Thevapalan's photo
Author
Arunn Thevapalan
LinkedIn
Twitter

Als senior data scientist ontwerp, ontwikkel en implementeer ik grootschalige machinelearningsoplossingen om bedrijven te helpen betere, datagedreven beslissingen te nemen. Als schrijver over data science deel ik inzichten, carrièreadvies en diepgaande, praktijkgerichte tutorials.

Onderwerpen

Leer meer over Python

Cursus

Tijdreeksgegevens manipuleren in Python

4 Hr
71.6K
In deze cursus leer je de basis van het werken met tijdreeksgegevens.
Bekijk detailsRight Arrow
Begin met de cursus
Meer zienRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer zienMeer zien