I'm seeing unexpected behavior with recurrences on different sides of a
daylight savings change. I'm expecting that I get the same local time of day,
regardless of which side I'm on.
I've been using Jerusalem as a test time zone due to the fact that it goes onto
daylight savings on a Friday. So, in the below sample code, I'm testing last
spring's changeover on 2008-3-28. Since both the Thursday and Friday
recurrences start and end at the same times of day, I'm expecting that I should
get 8:30am for the start and 3:30pm for the end on both days. However, what I
get for output is:
Thursday start: 2008-03-27T08:30:00 end: 2008-03-27T15:30:00
Friday start: 2008-03-28T09:30:00 end: 2008-03-28T16:30:00
How do I get consistent local times of day?
-----
DateTime: 0.4305
DateTime::Event::Recurrence: 0.16
DateTime::SpanSet: 0.25
perl 5.10.0
-----
use DateTime;
use DateTime::Event::Recurrence;
use DateTime::SpanSet;
show_day_start_and_end(4, 'Thursday', 27);
show_day_start_and_end(5, 'Friday', 28);
sub show_day_start_and_end {
my ($day_index, $day_name, $day_of_month) = @_;
my $span_set =
DateTime::SpanSet
->from_sets(
start_set =>
DateTime::Event::Recurrence->weekly(
days => $day_index, hours => 8, minutes => 30,
),
end_set =>
DateTime::Event::Recurrence->weekly(
days => $day_index, hours => 15, minutes => 30,
),
)
->set_time_zone('Asia/Jerusalem');
my $date =
DateTime->new(
year => 2008,
month => 3,
day => $day_of_month,
hour => 12,
time_zone => 'Asia/Jerusalem'
);
my $span = $span_set->current($date)->span();
say "$day_name start: ", $span->start(), ' end: ', $span->end();
}