Python datetime beheersen: praktische gids voor datums, tijden en tijdzones
Python datetime beheersen
Ontdek hoe je met datums en tijden in Python werkt via hands-on voorbeelden en duidelijke uitleg.
Video: Python datetime – Werken met datums en tijden
Python's datetime-module biedt krachtige tools voor het manipuleren van datums en tijden. Hieronder lopen we door veelvoorkomende taken, van het ophalen van het huidige moment tot formateren en timezone-afhandeling.
Voorbeeld 1: Huidige datum en tijd ophalen
import datetime
datetime_object = datetime.datetime.now()
print(datetime_object)
De uitvoer ziet eruit als:
2018-12-19 09:26:03.478039
We importeren de module met import datetime. De datetime-klasse bevat een now()-methode die de lokale datum en tijd retourneert.
Voorbeeld 2: Huidige datum ophalen
import datetime
datum_object = datetime.date.today()
print(datum_object)
De uitvoer is:
2018-12-19
We gebruiken today() van de date-klasse om de huidige kalenderdatum op te halen.
De datetime-module verkennen
Voer dir(datetime) uit om alle attributen en klassen te lijsten:
import datetime
print(dir(datetime))
Uitvoer:
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', 'datetime', 'datetime_CAPI', 'time', 'timedelta', 'timezone', 'tzinfo']
Belangrijke klassen zijn date, time, datetime en timedelta.
datetime.date-klasse
De date-klasse vertegenwoordigt een kalenderdatum (jaar, maand, dag).
Voorbeeld 3: Een datum-object aanmaken
import datetime
d = datetime.date(2019, 4, 13)
print(d)
Resultaat:
2019-04-13
Hier is date() een constructor die year, month en day als argumenten accepteert.
De variabele a is een date-instantie.
Alleen de date-klasse importeren:
from datetime import date
a = date(2019, 4, 13)
print(a)
Voorbeeld 4: Huidige datum
Gebruik de today() classmethod:
from datetime import date
vandaag = date.today()
print("Huidige datum =", vandaag)
Voorbeeld 5: Vanuit timestamp
Een Unix-timestamp telt seconden sinds 1970-01-01 UTC. Converteer met fromtimestamp():
from datetime import date
timestamp = date.fromtimestamp(1326244364)
print("Datum =", timestamp)
Uitvoer:
Datum = 2012-01-11
Voorbeeld 6: Jaar, maand, dag benaderen
from datetime import date
vandaag = date.today()
print("Huidig jaar:", vandaag.year)
print("Huidige maand:", vandaag.month)
print("Huidige dag:", vandaag.day)
datetime.time
De time-klasse slaat een kloktijd op zonder datum.
Voorbeeld 7: Tijd-objecten aanmaken
from datetime import time
a = time()
print("a =", a)
b = time(11, 34, 56)
print("b =", b)
c = time(hour=11, minute=34, second=56)
print("c =", c)
d = time(11, 34, 56, 234566)
print("d =", d)
Resultaat:
a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11:34:56.234566
Voorbeeld 8: Tijd-componenten inspecteren
from datetime import time
a = time(11, 34, 56)
print("uur =", a.hour)
print("minuut =", a.minute)
print("seconde =", a.second)
print("microseconde =", a.microsecond)
Uitvoer:
uur = 11 minuut = 34 seconde = 56 microseconde = 0
datetime.datetime
De datetime-klasse combineert zowel datum- als tijdinformatie.
Voorbeeld 9: Een datetime-object aanmaken
from datetime import datetime
# jaar, maand, dag
A = datetime(2018, 11, 28)
print(A)
# volledige specificatie
B = datetime(2017, 11, 28, 23, 55, 59, 342380)
print(B)
Resultaat:
2018-11-28 00:00:00 2017-11-28 23:55:59.342380
Jaar, maand en dag zijn verplicht; uur, minuut, seconde en microseconde defaulten naar nul.
Voorbeeld 10: Componenten & timestamp inspecteren
from datetime import datetime
A = datetime(2017, 11, 28, 23, 55, 59, 342380)
print("jaar =", A.year)
print("maand =", A.month)
print("dag =", A.day)
print("uur =", A.hour)
print("minuut =", A.minute)
print("timestamp =", A.timestamp())
Uitvoer:
jaar = 2017 maand = 11 dag = 28 uur = 23 minuut = 55 timestamp = 1511913359.34238
datetime.timedelta
Een timedelta-object vertegenwoordigt een duur tussen twee datums of tijden.
Voorbeeld 11: Verschil tussen datums & tijden
from datetime import datetime, date
D1 = date(year=2018, month=7, day=12)
D2 = date(year=2017, month=12, day=23)
D3 = D1 - D2
print("D3 =", D3)
D4 = datetime(year=2018, month=7, day=12, hour=7, minute=9, second=33)
D5 = datetime(year=2019, month=6, day=10, hour=5, minute=55, second=13)
D6 = D4 - D5
print("D6 =", D6)
print("type van D3 =", type(D3))
print("type van D6 =", type(D6))
Uitvoer:
D3 = 201 days, 0:00:00 D6 = -333 days, 1:14:20 type van D3 = <class 'datetime.timedelta'> type van D6 = <class 'datetime.timedelta'>
Voorbeeld 12: Timedelta-objecten aftrekken
from datetime import timedelta
D1 = timedelta(weeks=2, days=5, hours=1, seconds=33)
D2 = timedelta(days=4, hours=11, minutes=4, seconds=54)
D3 = D1 - D2
print("D3 =", D3)
Uitvoer:
D3 = 14 days, 13:55:39
Voorbeeld 13: Negatieve timedelta
from datetime import timedelta
D1 = timedelta(seconds=33)
D2 = timedelta(seconds=54)
D3 = D1 - D2
print("D3 =", D3)
print("abs(D3) =", abs(D3))
Uitvoer:
D3 = -1 day, 23:59:39 abs(D3) = 0:00:21
Voorbeeld 14: Totale seconden in een timedelta
from datetime import timedelta
D = timedelta(days=5, hours=1, seconds=33, microseconds=233423)
print("totale seconden =", D.total_seconds())
Uitvoer:
totale seconden = 435633.233423
Je kunt datums optellen, een timedelta vermenigvuldigen met een getal, en delen door een float om duraties te schalen.
Datums formateren en parsen
Verschillende locales gebruiken diverse datumformaten (bijv. mm/dd/yyyy in VS vs dd/mm/yyyy in UK). Python's strftime() en strptime()-methoden helpen converteren tussen datetime-objecten en geformatteerde strings.
Python strftime() – datetime naar string
from datetime import datetime
nu = datetime.now()
# Uur:minuut:seconde
T = nu.strftime("%H:%M:%S")
print("tijd:", T)
# VS-formaat
S1 = nu.strftime("%m/%d/%Y, %H:%M:%S")
print("S1:", S1)
# UK-formaat
S2 = nu.strftime("%d/%m/%Y, %H:%M:%S")
print("S2:", S2)
Typische uitvoer:
tijd: 04:34:52 S1: 12/26/2018, 04:34:52 S2: 26/12/2018, 04:34:52
Veelvoorkomende formaatcodes: %Y jaar, %m maand, %d dag, %H uur, %M minuut, %S seconde.
Python strptime() – string naar datetime
from datetime import datetime
datum_string = "21 juni, 2018"
print("datum_string =", datum_string)
datum_object = datetime.strptime(datum_string, "%d %B, %Y")
print("datum_object =", datum_object)
Uitvoer:
datum_string = 21 juni, 2018 datum_object = 2018-06-21 00:00:00
Hier is %d dag, %B volledige maandnaam, en %Y jaar.
Timezone-awareness
Voor applicaties die tijden in verschillende zones moeten tonen of berekenen, vermijd handmatige berekeningen en gebruik de pytz-bibliotheek.
from datetime import datetime
import pytz
lokaal = datetime.now()
print("Lokaal:", lokaal.strftime("%m/%d/%Y, %H:%M:%S"))
tz_NY = pytz.timezone('America/New_York')
dt_NY = datetime.now(tz_NY)
print("NY:", dt_NY.strftime("%m/%d/%Y, %H:%M:%S"))
tz_Londen = pytz.timezone('Europe/London')
dt_Londen = datetime.now(tz_Londen)
print("Londen:", dt_Londen.strftime("%m/%d/%Y, %H:%M:%S"))
Voorbeelduitvoer:
Lokaal: 12/20/2018, 13:10:44 NY: 12/20/2018, 08:10:44 Londen: 12/20/2018, 13:10:44
De datetime_NY en datetime_Londen objecten bevatten timezone-aware timestamps.
Python
- Python Datatypes onder de knie krijgen: Een praktische gids
- Python Operators onder de knie krijgen: Een uitgebreide gids
- Python Pass Statement onder de knie krijgen: Een praktische gids
- Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
- Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
- Python-iterators: hoe ze werken en hoe je je eigen maakt
- Python-closures uitgelegd: hoe geneste functies variabelen vangen
- Huidige datum en tijd ophalen in Python: een praktische gids
- Python: Huidige tijd en tijdzonedata eenvoudig ophalen
- Python's time.sleep() onder de knie krijgen: best practices, multithreading en real-world voorbeelden
- Python Overzicht: Hoog-Niveau, Leesbaar, Interactief & Object-Georiënteerd