De datetime module bevat functies die je berekeningen laten uitvoeren
met datum en tijd. De module bevat een aantal classes die daarbij
helpen, waarvan de meest belangrijke zijn: datetime, timedelta,
date, en time. datetime bevat attributen year (jaar), month
(maand), day (dag), hour (uur), minute (minuut), second
(seconde), microsecond (duizendste seconde), en tzinfo (tijdzone).
date en time bevatten een deelverzameling van deze attributen.
Objecten die instanties zijn van deze classes zijn onveranderbaar.
Ik beperk mij hier tot het bespreken van datetime en timedelta, maar
er bestaan equivalente functies en methodes voor de andere classes.
datetime objecten bevatten een datum en een tijd. Sommige van de
methodes in datetime objecten zijn:
now() creëert een datetime object dat de huidige datum en tijd
bevat. Je roept deze methode typisch aan met een class call om een
waarde voor now() te krijgen.
datetime() creëert een datetime object met de opgegeven
argumenten. De eerste drie argumenten zijn niet optioneel, en
bevatten in volgorde numerieke waardes voor jaar, maand, en dag. De
andere attributen (uur, minuut, seconde, duizendste seconde, en
tijdzone) zijn optioneel. Argumenten kun je ofwel in de voorgenoemde
volgorde geven, of via de syntax <argument>=<waarde>, waarbij
<argument> de naam van een attribuut is zoals hierboven
beschreven.
from datetime import datetime
print( datetime.now() )
Als je datetime objecten afdrukt krijg je een specifiek formaat als
uitvoer. Als je dit formaat wilt wijzigen (inclusief het afdrukken van
de naam van de dag in de week) dan kun je in de datetime module
functies vinden die dat mogelijk maken. Zie de Python handleiding voor
meer informatie.
Om met datetime objecten te rekenen, heb je timedelta nodig. Een
timedelta object specificeert het verschil tussen twee datetime
objecten. Een timedelta object bevat days (dagen), seconds
(seconden), en microseconds (duizendste seconden). Je kunt ook andere
attributen in een timedelta object vinden, die tijdverschil op andere
manieren uitdrukken, maar de enige drie die het opslaat zijn de drie die
ik hier noem; andere attributen worden uit deze drie berekend.
Je kunt allerlei berekeningen uitvoeren met timedelta objecten, maar
de meest nuttige behandelen het verschil tussen twee datetime
objecten. Je kunt dus een timedelta object optellen bij een datetime
object om een nieuw datetime object als uitkomst te krijgen, of je
kunt twee datetime objecten van elkaar aftrekken om het verschil te
krijgen als een timedelta object.
from datetime import datetime, timedelta
ditjaar = datetime.now().year
xmasditjaar = datetime( ditjaar, 12, 25, 23, 59, 59 )
dezedag = datetime.now()
dagen = xmasditjaar - dezedag
if dagen.days < 0:
print( "Kerst komt volgend jaar weer." )
elif dagen.days == 0:
print( "Het is Kerst!" )
else:
print( "Slechts", dagen.days, "dagen tot Kerst!" )