use DateTime; use DateTime::Event::Sunrise; use strict; my $timezone = "Pacific/Auckland"; my ( $latitude, $longitude ) = ( -36.55, 174.45 ); my $dt_start = DateTime->new( year => 2006, month => 3, day => 1, hour => 4, time_zone => $timezone, ); my $dt_end = $dt_start->clone()->add(days=>31); for ( my $dt = $dt_start->clone(); $dt < $dt_end; $dt->add(days=>1) ) { my $sset = DateTime::Event::Sunrise->sunset( longitude => $longitude, latitude => $latitude, altitude => '-0.833', iteration => '1' ); my $dt_ss = $sset->next($dt); print( "Sunset on " . $dt->strftime("%d %B %Y") . " at " . $dt_ss->strftime("%H:%M") . "\n" ); } #### Sunset on 19 March 2006 at 18:38 Sunset on 20 March 2006 at 18:36 Sunset on 21 March 2006 at 18:33 Sun never sets!! at /usr/lib/perl5/vendor_perl/5.8.5/DateTime/Set.pm line 240 Sun never sets!! at /usr/lib/perl5/vendor_perl/5.8.5/DateTime/Set.pm line 240 Sun never rises!! at /usr/lib/perl5/vendor_perl/5.8.5/DateTime/Set.pm line 240 Sun never rises!!