Sommer- oder Winterzeit?

Hallöchen,

ich suche ein möglichst einfaches Skript, welches mir erlaubt, von einem gegebenen Datum (Format JJJJMMTT) zu sagen, ob es in der Sommerzeit oder Winterzeit liegt.

Leider ist das ja nicht in jedem Jahr am selben Tag, so dass ein

if ($monatundtag \>0320 && $monatundtag 

es nicht tut... außerdem gibt es da noch diese blöden Wechseltage, an denen ich eine "Kann beides sein" Antwort bräuchte - die dann vom (nicht gegebenen) HHMISS abhienge.

Danke schonmal,
Michael

Moin,

ich suche ein möglichst einfaches Skript, welches mir erlaubt,
von einem gegebenen Datum (Format JJJJMMTT) zu sagen, ob es in
der Sommerzeit oder Winterzeit liegt.

Der Trick ist, mit POSIX::mktime das Datum in eine Unix Timestamp umzuwandeln, und dann man localtime() abzufragen, ob Sommerzeit ist.

Das macht man für die erste und die letzte Sekunde des Tages, und bei gleichen Ergebnissen weiss man genau was Sache ist, bei unterschiedlichen ist man in der „kann beides sein“-Zone.

#!/usr/bin/perl
use strict;
use warnings;

use POSIX qw(mktime);

while (){
chomp;
print dst($_), „\n“;

}

sub dst {
my $date = shift;
$date =~ m/^(\d{4})(\d{2})(\d{2})$/
or die „Invalid date format: ‚$date‘“;
my ($y, $m, $d) = ($1, $2, $3);

my $ts1 = mktime(0, 0, 0, $d, $m -1 , $y - 1900);
my $r1 = (localtime $ts1)[-1];

my $ts2 = mktime(59, 59, 23, $d, $m -1 , $y - 1900);
my $r2 = (localtime $ts1)[-1];

if ($r1 && $r2){
return „Sommerzeit“;
} elsif (!$r1 && !$r2){
return „Winterzeit“;
} else {
return „beides möglich“;
}

}

HTH,
Moritz

Der Trick ist, mit POSIX::mktime das Datum in eine Unix Timestamp umzuwandeln, und dann man localtime() abzufragen, ob Sommerzeit ist.

Sowas hatte ich mir fast gedacht, habe es nur nicht gebacken bekommen :stuck_out_tongue:

Und für diese äußerst praktische Lösung für mein praktisches Problem gibt’s ein Sternli als Dankeschön :smile:

Gruss,
Michael