Recurrences and daylight savings

[email protected]
Newsgroups perl.datetime
Message-ID <[email protected]>
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();
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.