Hi Flavio,
I am working on the as_set portion of the sunrise module and I need your
advise. What I wanted to accomplish is to have the module accept a
DateTime::Set object compute the rise/set times and return a new
DateTime::Set object. Here is what I have done:
sub as_set {
my $self = shift;
my $dt = shift;
croak( "Dates need to be DateTime::Set objects (" . ref($dt) . ")" )
unless ( ref($dt) eq 'DateTime::Set' );
my @set = ();
my $iter = $dt->iterator;
while (my $tmp_dt = $iter->next ) {
my($tmp_rise,$tmp_set) = sunrise( $self, $tmp_dt);
push(@set, $tmp_rise);
push(@set, $tmp_set);
}
return DateTime::Set->new( dates =>[sort @set] );
}
Having done this, I was able to write a perl script using the easter and
sunrise
module like this:
#!/usr/bin/perl
use strict;
use warnings;
use DateTime;
use DateTime::Event::Sunrise;
use DateTime::Event::Easter;
my $easter_sunday = DateTime::Event::Easter->new();
my $sunrise = DateTime::Event::Sunrise ->new(
Longitude =>'-118' ,
Latitude => '33',
);
my $dt1 = DateTime->new( year => 2000,
month => 1,
day => 1,
);
my $dt2 = DateTime->new( year => 2050,
month => 12,
day => 1,
);
my $easter = $easter_sunday->as_set(from=>$dt1, to=>$dt2, inclusive=>1);
my $set2 = $sunrise->as_set($easter);
my $iter = $set2->iterator;
while ( my $dt = $iter->next ) {
$dt->set_time_zone( 'America/Los_Angeles' );
print $dt->datetime ."\n";
}
Is there anything else I need to add/change?
Please advise.
Thanks
Ron Hill