3 ################################################################################
5 # File: shared/Time/German.pm #
7 # Authors: Andre Malo <nd@o3media.de>, 2001-06-10 #
9 # Description: determine time offset German Time <=> GMT (seconds) #
11 ################################################################################
20 ################################################################################
24 $VERSION = do { my @r =(q
$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x
$#r, @r };
26 ################################################################################
31 @EXPORT_OK = qw(localtime);
32 %EXPORT_TAGS = (overwrite_internal_localtime
=> 'localtime'); # ;-)) Thanks to Calocybe
34 ################################################################################
36 # german summertime 1980-1995 (ydays)
57 ### localtime () ###############################################################
59 # like 'localtime', but system independent
61 # Params: $time - time since epoch (GMT)
63 # Return: same as localtime, but german time ;-)
67 $time = time unless defined $time;
69 my ($hour,$mday,$mon,$year,$wday,$yday) = (gmtime($time))[qw(2 3 4 5 6 7)];
74 if ($summertime{$year}) {
77 $yday > $summertime{$year} -> [0] and
78 $yday < $summertime{$year} -> [1]
81 $yday == $summertime{$year} -> [0] and
85 $yday == $summertime{$year} -> [1] and
94 # determine last Sunday in March or October
96 my $limit = $mday + int((31-$mday)/7) * 7 - $wday if ($mon == 2 or $mon == 9);
122 return gmtime($time + $offset * 3600);
125 # keep 'require' happy
130 ### end of Time::German ########################################################