prettige zomeruur gewenst!

Vandaag verspringt de klok een uurtje (van 2u naar 3u), daardoor missen de meeste mensen een uurtje slaap (tenzij ge een uur vroeger gaan slapen zijt, dan verliest ge een uur dag...)

Volgens de uitleg op wikipedia werd de zomertijd (ook wel zomeruur) ingevoerd om energie te besparen. Tegenwoordig zou dat volgens een aantal critici niet meer nodig zijn.

Ik vroeg mij af wat het verschil zou zijn als we geen zomeruur hadden.

Eerst de resultaten, daarna post ik het script.

Ik maak gebruik van de data die hier staat. Daar heb ik een perl-script rond geschreven dat als invoer die html pagina neemt en uitrekent hoeveel uur een persoon gedurende het jaar in de duisternis zit (en dus zijn licht zou moeten aansteken).

Ik ga ervanuit dat de doorsnee persoon opstaat om 7u smorgens en gaat slapen om 23u savonds.

Het resultaat is als volgt:

Met zomeruur:
Seconds in grey: 1204380 13 day(s), 22 hour(s), 33 min(s), 0 sec(s)
Seconds in black: 4204920 48 day(s), 16 hour(s), 2 min(s), 0 sec(s)

Zonder zomeruur:
Seconds in grey: 1192380 13 day(s), 19 hour(s), 13 min(s), 0 sec(s)
Seconds in black: 3812100 44 day(s), 2 hour(s), 55 min(s), 0 sec(s)


Met andere woorden, door gebruik te maken van zomeruur zitten we in totaal 392820 seconden langer in het donker en 12000 seconden minder lang in de schemer.

Als ik ervanuitga dat iedereen zijn licht aandoet zowel in schemer als in donker, dan is dat bij zomeruur dus (1204380+4204920)-(1192380+3812100) = 404820 seconden extra energieverbruik bij verlichting. Dat is 4 dagen, 16 uur en 27 minuten.

Laat ons nu eens stellen dat een normale persoon opstaat om 5u smorgens en wakkerblijft tot 21u savonds.


Met zomertijd:
Seconds in grey: 1281240 14 day(s), 19 hour(s), 54 min(s), 0 sec(s)
Seconds in black: 3874560 44 day(s), 20 hour(s), 16 min(s), 0 sec(s)

Zonder zomertijd:
Seconds in grey: 1210680 14 day(s), 0 hour(s), 18 min(s), 0 sec(s)
Seconds in black: 4458360 51 day(s), 14 hour(s), 26 min(s), 0 sec(s)


Met zomertijd zitten we dan 583800 seconden minder lang in het donker, maar wel 70560 seconden langer in het schemer. Oftewel 5 dagen, 22 uur en 34 minuten minder energieverbruik bij verlichting.

Het hangt er dus allemaal vanaf hoe laat je opstaat en gaat slapen :)

[Update]

Hier zijn nog wa extra berekeningen (Ik reken telkens 8u slaap):


04:00 - 20:00: uitgespaard verbruik met zomeruur = 7 day(s), 18 hour(s), 46 min(s), 0 sec(s)
04:15 - 20:15: uitgespaard verbruik met zomeruur = 7 day(s), 11 hour(s), 12 min(s), 0 sec(s)
04:30 - 20:30: uitgespaard verbruik met zomeruur = 7 day(s), 1 hour(s), 25 min(s), 0 sec(s)
04:45 - 20:45: uitgespaard verbruik met zomeruur = 6 day(s), 13 hour(s), 14 min(s), 0 sec(s)
05:00 - 21:00: uitgespaard verbruik met zomeruur = 5 day(s), 22 hour(s), 34 min(s), 0 sec(s)
05:15 - 21:15: uitgespaard verbruik met zomeruur = 5 day(s), 6 hour(s), 13 min(s), 0 sec(s)
05:30 - 21:30: uitgespaard verbruik met zomeruur = 4 day(s), 12 hour(s), 59 min(s), 0 sec(s)
05:45 - 21:45: uitgespaard verbruik met zomeruur = 3 day(s), 9 hour(s), 32 min(s), 0 sec(s)
06:00 - 22:00: uitgespaard verbruik met zomeruur = 1 day(s), 20 hour(s), 2 min(s), 0 sec(s)
06:15 - 22:15: extra verbruik met zomeruur = 0 day(s), 2 hour(s), 43 min(s), 0 sec(s)
06:30 - 22:30: extra verbruik met zomeruur = 2 day(s), 1 hour(s), 18 min(s), 0 sec(s)
06:45 - 22:45: extra verbruik met zomeruur = 3 day(s), 13 hour(s), 49 min(s), 0 sec(s)
07:00 - 23:00: extra verbruik met zomeruur = 4 day(s), 16 hour(s), 27 min(s), 0 sec(s)
07:15 - 23:15: extra verbruik met zomeruur = 5 day(s), 9 hour(s), 48 min(s), 0 sec(s)
07:30 - 23:30: extra verbruik met zomeruur = 6 day(s), 2 hour(s), 38 min(s), 0 sec(s)
07:45 - 23:45: extra verbruik met zomeruur = 6 day(s), 19 hour(s), 4 min(s), 0 sec(s)
08:00 - 00:00: extra verbruik met zomeruur = 7 day(s), 9 hour(s), 41 min(s), 0 sec(s)
08:15 - 00:15: extra verbruik met zomeruur = 7 day(s), 22 hour(s), 26 min(s), 0 sec(s)
08:30 - 00:30: extra verbruik met zomeruur = 8 day(s), 9 hour(s), 13 min(s), 0 sec(s)
08:45 - 00:45: extra verbruik met zomeruur = 8 day(s), 16 hour(s), 44 min(s), 0 sec(s)
09:00 - 01:00: extra verbruik met zomeruur = 8 day(s), 21 hour(s), 45 min(s), 0 sec(s)
09:15 - 01:15: extra verbruik met zomeruur = 9 day(s), 0 hour(s), 27 min(s), 0 sec(s)
09:30 - 01:30: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
09:45 - 01:45: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
10:00 - 02:00: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
10:15 - 02:15: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
10:30 - 02:30: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
10:45 - 02:45: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
11:00 - 03:00: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
11:15 - 03:15: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
11:30 - 03:30: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
11:45 - 03:45: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
12:00 - 04:00: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
12:15 - 04:15: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
12:30 - 04:30: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)
12:45 - 04:45: extra verbruik met zomeruur = 9 day(s), 1 hour(s), 0 min(s), 0 sec(s)


Experimenteel wijst het erop dat opstaan om 6:15 en slapen om 22:15 ongeveer evenveel energie gebruikt met als zonder zomeruur.

Hier is de code:

#!/usr/bin/perl

use Data::Dumper;

$ignore_summertime = 1;
$slaaptijd = "23:00";
$opstatijd = "07:00";

sub datestr_to_sec {
my $str = shift;
my $h, $m;

if($str =~ /^(\d+):(\d+)$/) {
$h = $1 + 0;
$m = $2 + 0;
}

return ($h * 3600) + ($m * 60);
}

sub sec_to_read {
my $sec = shift;
my $d, $h, $m, $s;

$d = int($sec / 86400); $sec %= 86400;
$h = int($sec / 3600); $sec %= 3600;
$m = int($sec / 60); $sec %= 60;
$s = $sec;

return "$d day(s), $h hour(s), $m min(s), $s sec(s)";
}

$list = {};
$counter = 0;
$prev = -1;
$currentsummertime = 0;

$wakeup = datestr_to_sec($opstatijd);
$sleep = datestr_to_sec($slaaptijd);

while($line = ) {

chomp $line;
if($line =~ /(\d+) (\d+) (\d+) <\/td>(\d\d:\d\d) <\/td>(\d\d:\d\d) <\/td> (\d\d)\. <\/td>(\d\d:\d\d) <\/td>(\d\d:\d\d) <\/td><\/tr>/) {
my($day, $month, $year, $start, $end, $schem_duration, $schem_start, $schem_end) =
($1, $2, $3, $4, $5, $6, $7, $8);

$list->{$counter}->{day} = $day;
$list->{$counter}->{month} = $day;
$list->{$counter}->{year} = $day;
$list->{$counter}->{daytime} = "$year$month$day";
$list->{$counter}->{start_string} = $start;
$list->{$counter}->{start} = datestr_to_sec($start);
$list->{$counter}->{end_string} = $end;
$list->{$counter}->{end} = datestr_to_sec($end);
$list->{$counter}->{schem_duration} = $schem_duration * 60;
$list->{$counter}->{schem_start_string} = $schem_start;
$list->{$counter}->{schem_start} = datestr_to_sec($schem_start);
$list->{$counter}->{schem_end_string} = $schem_end;
$list->{$counter}->{schem_end} = datestr_to_sec($schem_end);

if($prev < 0) {
# we start in januari, which is winter time
$currentsummertime = 0;
} elsif($list->{$counter}->{start} - $prev > 50*60) {
# summer time
#print "Switched to summertime on $list->{$counter}->{daytime}\n";
$currentsummertime = 1;

} elsif($prev - $list->{$counter}->{start} > 50*60) {
# winter time
#print "Switched to wintertime on $list->{$counter}->{daytime}\n";
$currentsummertime = 0;
} else {

}
$list->{$counter}->{summertime} = $currentsummertime;
$prev = $list->{$counter}->{start};
$counter++;
}
}

#print Dumper($list);

# night
$blacksecs = 0;
# dawn
$greysecs = 0;

$realwakeup = $wakeup;
$realsleep = $sleep;

for($i = 0; $i < $counter; $i++) {
#print "$i $list->{$i}->{schem_start} sec $list->{$i}->{start} sec $list->{$i}->{end} sec $list->{$i}->{schem_end} sec drawday\n";

# simulate that summertime doesn't exist
if($ignore_summertime and $list->{$i}->{summertime}) {
$realwakeup = $wakeup - 3600;
$realsleep = $sleep - 3600;
} else {
$realwakeup = $wakeup;
$realsleep = $sleep;
}

# we wake up before dawn
if($realwakeup < $list->{$i}->{schem_start}) {
$blacksecs += ($list->{$i}->{schem_start} - $realwakeup);
}

# we wake up before sunlight
if($realwakeup < $list->{$i}->{start}) {
# are we awake before dawn ?
if($realwakeup < $list->{$i}->{schem_start}) {
$greysecs += $list->{$i}->{schem_duration};
} else {
# we woke up during dawn
$greysecs += $list->{$i}->{start} - $realwakeup;
}
}

# we go to realsleep when it's dark
if($realsleep > $list->{$i}->{schem_end}) {
$blacksecs += ($realsleep - $list->{$i}->{schem_end});
}

# we go to realsleep when the sun sets
if($realsleep > $list->{$i}->{end}) {
if($realsleep > $list->{$i}->{schem_end}) {
$greysecs += $list->{$i}->{schem_duration};
} else {
$greysecs += $realsleep - $list->{$i}->{end};
}
}
}

print "Seconds in grey: $greysecs ".sec_to_read($greysecs)."\n";
print "Seconds in black: $blacksecs ".sec_to_read($blacksecs)."\n";