I'm not sure if this is me being dumb or whether it's an actual bug.
Given this code
use strict;
use DateTime;
use DateTime::Format::ICal;
my $hour = shift || 0;
my $start = DateTime->new(year => 2008, month => 3, day => 1);
$start->set( hour => 18 ) if $hour;
my $recur = DateTime::Format::ICal->parse_recurrence(
recurrence => "FREQ=WEEKLY;BYDAY=MO;UNTIL=20080331",
dtstart => $start
);
my $iter = $recur->iterator;
while ( my $dt = $iter->next) {
print " ".$dt->ymd."\n";
};
I would expect to get the 5 mondays in March on the 3rd, 10th, 17th,
24th and 31st and if you run it without passing a command line argument
then that's what you get.
However, if you run it as ./script 1 then you don't get the final
occurrence on the 31st.
I'm guessing it's the mismatch between the precision of the UNTIL and
the $start - should something (either DateTime::Format::ICal,
DateTime::Event::ICal or my code) truncate the $start to the same
precision as the UNTIL?
Thanks,
Simon