PROG0407 - Daylight saving time

Daylight saving time (DST or summertime) is the arrangement by which clocks are advanced by one hour in spring and moved back in autumn to make the most of seasonal daylight

zomertijd
Spring: shift to daylight saving time.
wintertijd
Autumn: shift to standard time.

In the summer the sun rises so early that it is already light while most people are still sleeping. By shifting the clock, the sun seems to rise and to set later. This is why in the morning it is dark for longer, and in the evening it is light for longer. The period of daylight is thus more consistent with the period when most people are awake. The idea behind DST is that there could be cut back on (electric) lighting. However, the energy-saving effect of DST is controversial. Approximately 70 countries are currently changing the time on their clocks twice a year. In the European Union, the DST runs from the last Sunday in March until the last Sunday in October. The dates of the next few years the DST in the European Union begins and ends, are shown in the table below.

year begin date end date
2013 31 March 27 October
2014 30 March 26 October
2015 29 March 25 October
2016 27 March 30 October
2017 26 March 29 October

Assignment

  • Write a function summertime to which a year must be passed as an argument. The function must return a date object (datetime module from the Python Standard Library), which represents the date on which the European Union enters the daylight saving time (last Sunday of March) in the specified year.
  • Write a function wintertime to which a year must be passed as an argument. The function must return a date object (datetime module from the Python Standard Library), which represents the date on which the European Union enters the standard time (last Sunday of October) in the specified year.
  • Write a function clock to which a string argument must be passed, which sets a date in the format day/month/year. The function must return a string that indicates whether the clock on the specified date is in summer time or winter time. The function must return a custom string on the dates on which will be switched between summer time and winter time. The possible definitions that the function must return can be found in the example below.

You can assume with every function that all years are between 1600 and 2400. In this task, it is important that you try to reuse code as much as possible and you should, where possible, thus avoid repeating a similar code.

Preparation

For this assignment you have to use the data types date and timedelta, which are defined in the module datetime of the Python Standard Library. The following interactive Pythonsession demonstrates all methods of the required data types:

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

Example

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

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

>>> clock('27/06/2013')
'summertime'
>>> clock('27/11/2013')
'wintertime'
>>> clock('31/03/2013')
'switch from wintertime to summertime'
>>> clock('27/10/2013')
'switch from summertime to wintertime'

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

  • Schrijf een functie zomertijd waaraan een jaartal als argument moet doorgegeven worden. De functie moet als resultaat een date object (datetime module van de Python Standard Library) teruggeven, dat de datum voorstelt waarop in de Europese Unie de zomertijd ingaat (laatste zondag van maart) in het opgegeven jaar.
  • Schrijf een functie wintertijd waaraan een jaartal als argument moet doorgegeven worden. De functie moet als resultaat een date object (datetime module van de Python Standard Library) teruggeven, dat de datum voorstelt waarop in de Europese Unie de wintertijd ingaat (laatste zondag van oktober) in het opgegeven jaar.
  • Schrijf een functie klok waaraan een stringargument moet doorgegeven worden, dat een datum voorstelt in het formaat dag/maand/jaar. De functie moet als resultaat een string teruggeven die aangeeft of de klok op de opgegeven datum in zomertijd of wintertijd staat. De functie moet een aangepaste string teruggeven op de datums waarop wordt overgeschakeld tussen zomertijd en wintertijd. De mogelijke omschrijvingen die de functie moet teruggeven vind je terug in onderstaande voorbeeldsessie.

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 gebruik maken van de gegevenstypes date en timedelta die gedefinieerd worden in de module datetime van de Python Standard Library. 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'

Added by:Peter Dawyndt
Date:2013-06-25
Time limit:10s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:PY_NBC
Resource:None

© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.