2007/8/7, J. David Blackstone <[EMAIL PROTECTED]>: > Given two DateTime objects as input, and an integer $N, I want to > partition the time in between them into $N equal intervals and return > an array of $N + 1 evenly-spaced DateTimes that begins with the first > input DateTime and ends with the last input DateTime.
you can hide the complexity with a Set: use DateTime::Event::ICal; my $start = DateTime->now; my $end = DateTime->new( year => 2008, month => 7, day => 12 ); my $n = 3; my $split = DateTime::Event::ICal->recur( dtstart => $start, freq => secondly, interval => int( ($end->hires_epoch() - $start->hires_epoch()) / $n ), until => $end, ); print join("\n", @{[ $split->as_list ]} ), "\n"; # you can hide the rounding error by replacing the last value with $end itself. print "rounded:\n"; @values = @{[ $split->as_list ]}; $values[-1] = $end; print join("\n", @values ), "\n"; - Flavio S. Glock