On Wed, Mar 26, 2008 at 11:34 AM, Ewald Beekman <[EMAIL PROTECTED]> wrote: > Is there a way to see if DST is in effect on a > returned time zone object ? > For instance, i have got a loop like this: > > my @list = DateTime::TimeZone->all_names; > foreach $zone (@list) { > next unless ($zone =~ /\//); # skip timezone links > in the list > $dt = DateTime->now(); # current computer > time > $tz = DateTime::TimeZone->new( name => $zone ); # timezone > > $offset = $tz->offset_for_datetime($dt); # offset from UTC for > this timezone > $TZ = $tz->short_name_for_datetime($dt); # timezone name (e.g. > CET) > $dt->add(seconds => $offset); # convert computer > time to time in timezone > $hoffset = $offset / 3600; # offset in hours > > printf "%40s\t%s\tGMT diff = %g\t%4s\t",$zone,$TZ, $hoffset,$DST; > printf "%d/%02d/%02d > %02d:%02d\n",$dt->year,$dt->month,$dt->day,$dt->hour,$dt->minute; > } > > How can i see for each zone displayed if it is in DST?
is_dst() method does it for you. if ($dt->clone->set_time_zone($tz)->is_dst) { # it's in DST now } HTH