Moin,
Hat schon jemand den Autor informiert? Bei einem so wichtigen Thema wuerde ich ungern von Fehlinformationen im Netz wissen.
hab gerade ne Mail losgeschickt.
falls es jemanden interessiert, hier mein Modul, was aus den Infos entstanden ist:
(ueber die Hierarchie innerhalb der Time::-Gruppe bin ich mir noch nicht ganz im klaren...)
(demnaechst dann auch auf sf.net zu bewundern ;)
package Time::German;
################################################################################
# #
File: shared/Time/German.pm
# #
Authors: Andre Malo nd@o3media.de, 2001-06-10
# #
Description: determine time offset German Time <=> GMT (seconds)
# #
################################################################################
use strict;
my %summertime = (
80 => [96, 271],
81 => [87, 269],
82 => [86, 268],
83 => [85, 267],
84 => [84, 273],
85 => [89, 271],
86 => [88, 270],
87 => [87, 269],
88 => [86, 268],
89 => [84, 266],
90 => [83, 272],
91 => [89, 271],
92 => [88, 270],
93 => [86, 268],
94 => [85, 267],
95 => [84, 266]
);
germantime ()
like 'localtime', but system independent
Params: $time - time since epoch (GMT)
Return: same as localtime, but german time ;-)
sub germantime (;$) {
my $time = shift;
$time = time unless defined $time;
my ($hour,$mday,$mon,$year,$wday,$yday) = (gmtime($time))[qw(2 3 4 5 6 7)];
my $offset = 1;
# 1980 - 1995
#
if ($summertime{$year}) {
$offset++ if (
(
$yday > $summertime{$year} -> [0] and
$yday < $summertime{$year} -> [1]
) or
(
$yday == $summertime{$year} -> [0] and
$hour >= 1
) or
(
$yday == $summertime{$year} -> [1] and
$hour <= 1
)
);
}
# > 1995
#
elsif ($year > 95) {
# determine last Sunday in March or October
#
my $limit = $mday + int((31-$mday)/7) * 7 - $wday if ($mon == 2 or $mon == 9);
$offset++ if (
(
$mon > 2 and
$mon < 9
) or
(
$mon == 2 and
(
$mday > $limit or
$mday == $limit and
$hour >= 1
)
) or
(
$mon == 9 and
(
$mday < $limit or
$mday == $limit and
$hour <= 1
)
)
);
}
return gmtime($time + $offset * 3600);
}
keep 'require' happy
1;