Zomertijd (in Vlaanderen ook vaak zomeruur genoemd) is de tijd die gedurende de zomermaanden wordt aangehouden door de klok een uur vooruit te zetten, dit wil zeggen de klok een uur voor te laten lopen op de standaardtijd (die in dit verband ook wel wintertijd genoemd wordt).

zomertijd
Voorjaar: omschakeling van wintertijd naar zomertijd.
wintertijd
Najaar: omschakeling van zomertijd naar wintertijd.

In de zomer komt de zon zo vroeg op dat het al licht is terwijl de meeste mensen nog slapen. Door de klok te verzetten, lijkt de zon later op te komen en later weer onder te gaan. Hierdoor is het 's morgens langer donker, en blijft het 's avonds juist langer licht. De periode van daglicht komt zo beter overeen met de periode waarin de meeste mensen wakker zijn. De gedachte achter zomertijd is dat men zo zou kunnen bezuinigen op (elektrische) verlichting. Het energiebesparende effect van zomertijd is echter omstreden. Ongeveer 70 landen verzetten momenteel twee keer per jaar de klok. In de Europese Unie loopt de zomertijd van de laatste zondag van maart tot de laatste zondag van oktober. De datums waarop in de Europese Unie de komende jaren de zomertijd begint en eindigt, worden weergegeven in onderstaande tabel.

jaar begindatum einddatum
2013 31 maart 27 oktober
2014 30 maart 26 oktober
2015 29 maart 25 oktober
2016 27 maart 30 oktober
2017 26 maart 29 oktober

Opgave

Je mag er bij elke functie van uitgaan dat alle jaartallen tussen 1600 en 2400 liggen. Bij deze opgave is het belangrijk dat je probeert om zoveel mogelijk hergebruik te maken van programmacode, en moet je waar mogelijk dus vermijden om gelijkaardige code te herhalen.

Voorbereiding

Voor deze opgave moet je gebruikmaken van de gegevenstypes date en timedelta die gedefinieerd worden in de module datetime van de Python Standard Library1. Onderstaande interactieve Pythonsessie demonstreert alle methoden van deze gegevenstypes die je voor deze opgave nodig hebt:

>>> from datetime import date, timedelta
>>> vandaag = date.today()
>>> vandaag
datetime.date(2013, 6, 27)
>>> vandaag.weekday()
3
>>> morgen = vandaag + timedelta(1)
>>> morgen.weekday()
4
>>> morgen
datetime.date(2013, 6, 28)

Voorbeeld

>>> zomertijd(2013)
datetime.date(2013, 3, 31)
>>> zomertijd(2014)
datetime.date(2014, 3, 30)
>>> zomertijd(2015)
datetime.date(2015, 3, 29)

>>> wintertijd(2013)
datetime.date(2013, 10, 27)
>>> wintertijd(2014)
datetime.date(2014, 10, 26)
>>> wintertijd(2015)
datetime.date(2015, 10, 25)

>>> klok('27/06/2013')
'zomertijd'
>>> klok('27/11/2013')
'wintertijd'
>>> klok('31/03/2013')
'omschakeling van wintertijd naar zomertijd'
>>> klok('27/10/2013')
'omschakeling van zomertijd naar wintertijd'

Epiloog

“Don’t forget to put all your clocks forward tonight,” said Piglet.
“How much?” asked Pooh.
“About five inches, I think,” said Piglet, confidently.

Winnie-the-Pooh
Winnie-the-Pooh en Piglet.