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