This is my version:
[...]
if( $self->{sunset} && $self->{time_zone} )
{
my $dt = DateTime->from_object( object => $self );
my $sunset = $self->{sunset}->next( $dt );
$sunset->set_time_zone( $self->{time_zone} );
if ( $sunset->day != $dt->day ) {
$self->{rd_days}--;
}
}
Here is a test:
use strict;
use DateTime::Calendar::Hebrew;
use DateTime::Event::Sunrise;
my $sunset = DateTime::Event::Sunrise->sunset (
# Latitude/Longitude for NYC
longitude =>'-73.59',
latitude =>'40.38',
);
my $h = DateTime::Calendar::Hebrew->new(
year => 5000, month => 5, day => 15,
sunset => $sunset,
time_zone => 'America/New_York' );
print $h->datetime, " ", ($h->utc_rd_values)[0],"\n";
$h->set( hour => 22 );
print $h->datetime, " ", ($h->utc_rd_values)[0],"\n";
$h->set( day => 18 );
print $h->datetime, " ", ($h->utc_rd_values)[0],"\n";
# 5000-05-15T00:00:00 452759
# 5000-05-15T22:00:00 452758
# 5000-05-18T22:00:00 452761
- Flavio S. Glock