Modulelessen (2/4)
datetime: datums en tijden
De module datetime biedt de klassen om datums en tijden weer te geven.
De drie hoofdklassen
date— alleen datum (jaar, maand, dag)time— alleen tijd (uur, minuut, seconde, microseconde)datetime— datum + tijd samentimedelta— een duur (verschil tussen twee momenten)
from datetime import date, time, datetime, timedelta
date(2025, 1, 1) # datetime.date(2025, 1, 1)
time(14, 30, 0) # datetime.time(14, 30)
datetime(2025, 1, 1, 14, 30, 0) # datetime.datetime(2025, 1, 1, 14, 30)"Nu": now en today
datetime.now() # current date + time
date.today() # current date onlyRekenen met timedelta
from datetime import datetime, timedelta
ora = datetime(2025, 1, 1, 12, 0)
domani = ora + timedelta(days=1)
una_ora_fa = ora - timedelta(hours=1)
# difference between two datetimes -> timedelta
delta = domani - ora
delta.days # 1
delta.total_seconds() # 86400.0timedelta accepteert days, seconds, microseconds, milliseconds,
minutes, hours, weeks (NIET months of years, die dubbelzinnig zijn).
Opmaak: strftime
Transformeert datetime → string volgens een patroon.
ora = datetime(2025, 1, 1, 14, 30)
ora.strftime("%Y-%m-%d") # '2025-01-01'
ora.strftime("%d/%m/%Y %H:%M") # '01/01/2025 14:30'
ora.strftime("%A %d %B %Y") # 'Wednesday 01 January 2025' (locale-dependent)Meest gebruikte richtlijnen: %Y jaartal van 4 cijfers, %m maand van 2 cijfers, %d dag van 2 cijfers,
%H 24 uur, %M minuten, %S seconden.
Parseren: strptime
Het tegenovergestelde: string → datetime, gegeven het verwachte patroon.
datetime.strptime("01/01/2025", "%d/%m/%Y")
# datetime.datetime(2025, 1, 1, 0, 0)ISO8601
Geef voor gegevensuitwisseling altijd de voorkeur aan het ISO 8601-formaat (YYYY-MM-DDTHH:MM:SS):
ora.isoformat() # '2025-01-01T14:30:00'
datetime.fromisoformat("2025-01-01T14:30:00")Tijdzones en bewuste datetimes
Standaard zijn datetime objecten in Python naïef (wat betekent dat ze geen tijdzone-informatie bevatten). Voor toepassingen in de echte wereld is het een goede gewoonte om ze bewust te maken door tijdzone-informatie in te stellen via datetime.timezone.utc of door de module zoneinfo te gebruiken.
Probeer het
Bereken de datum 30 dagen na 1 januari 2025 en noteer deze als 'JJJJ-MM-DD' in de variabele 'date_str'. Evalueer `date_str`.
Toon hint
basis + timedelta(dagen=30), dan .strftime
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Gegeven de string `s = '15/03/2025'`, parseer deze met strptime in de variabele `d` (datetime object). Evalueer de gehele dag van de week `d.weekday()` (0=Ma, 6=Zon).
Toon hint
strptime met het patroon in Italiaans formaat.
Oplossing beschikbaar na 3 pogingen
Extra uitdaging
Import `date` from the `datetime` module. Calculate the difference in days between December 25, 2026 (`date(2026, 12, 25)`) and December 20, 2026 (`date(2026, 12, 20)`). Store the integer number of days (using the `.days` attribute of the delta) in `days_diff`. Finally, evaluate the variable.
Toon hint
The difference between two dates returns a timedelta. Access the integer days with delta.days.
Oplossing beschikbaar na 3 pogingen