Hi Flavio & Dave,

> 
> Dave Rolsky wrote:
> > 
> > On Wed, 24 Sep 2003, Flavio S. Glock wrote:
> > 
> > >  sub _following_sunrise {
> > >     [ ... initialize ...]
> > >     my $tz = $dt->time_zone;
> > >     my $loc = $dt->locale;
> > >     [ ... some calculations ... ]
> > >     $tmp_rise->set_time_zone( $tz );   # unless 
> $tz->is_floating ???
> > >     $tmp_rise->set_locale( $loc );
> > >     return $tmp_rise;
> > >  }
> > 
> > It's probably ok to set the time zone even if the given DT is in the
> > floating time zone.
> 
> No, converting from UTC to floating would give the same "unexpected"
> results.
> 
> How about adding ( localtime - gmtime ) before converting to floating?

I think we are making this harder that it needs to be. First off,
do you think it would be better to add these things in the _sunrise
subroutine? This is where I have created the new DT object.

          my $rise_dur = DateTime::Duration->new( hours   => $hour_rise,
                                                  minutes => $min_rise); 
          my $set_dur =  DateTime::Duration->new( hours   => $hour_set,
                                                  minutes => $min_set);
          
          my $tmp_dt1 = DateTime->new(
                  year      => $dt->year,
                  month     => $dt->month,
                  day       => $dt->day,
                  hour      => 0,
                  minute    => 0,
                  time_zone => 'UTC'
                   );                                             
                                                  
          my $rise_time = $tmp_dt1 + $rise_dur;
          my $set_time  = $tmp_dt1 + $set_dur;

        return ( $rise_time, $set_time );

I would set the time zone after I have added/subtractd the duration
to get the rise/set times.
As for floating time zones I say leave it at UTC and document
it.
just my 2 cents!!
Ron Hill

Reply via email to