Manual Reference Pages - DATE::CALC::ITERATOR (3)
Date::Calc::Iterator - Iterate over a range of dates
# This puts all the dates from Dec 1, 2003 to Dec 10, 2003 in @dates1
# @dates1 will contain ([2003,12,1],[2003,12,2] ... [2003,12,10]) ;
my $i1 = Date::Calc::Iterator->new(from => [2003,12,1], to => [2003,12,10]) ;
my @dates1 ;
push @dates1,$_ while $_ = $i1->next ;
# Adding an integer step will iterate with the specified step
# @dates2 will contain ([2003,12,1],[2003,12,3] ... ) ;
my $i2 = Date::Calc::Iterator->new(from => [2003,12,1], to => [2003,12,10], step => 2) ;
my @dates2 ;
push @dates2,$_ while $_ = $i2->next ;
Date::Calc::Iterator objects are used to iterate over a range of
dates, day by day or with a specified step. The method next() will
return each time an array reference containing ($year,$month,$date)
for the next date, or undef when finished.
This module is little and simple. It solves a little problem in a
simple way. It doesnt attempt to be the smarter module on CPAN, nor
the more complete one. If your problem is more complicated than this
module can solve, you should go and check DateTime::Event::Recurrence, which
solves a so broad range of problems that yours cant fall out of it.
Probabily this module wont evolve a lot. Expect bug fixes,
minor improvements in the interface, and nothing more.
If you need to solve bigger problems, you have two choices: vivifying
a 2.x version of the module (after contacting me, of course) or using
DateTime::Event::Recurrence and its brothers.
Anyway, I left the name Iterator, and not Iterator::Day or
DayIterator, for example, so that the module can evolve if the need
be. Who knows? Maybe one day I could need to make it iterate over
weekdays, or over moon phases... lets leave the way open, time will
Creates a new object. You <B>mustB> pass it the end points of a date interval
as array references:
$i = Date::Calc::Iterator->new( from => [2003,12,1], to => [2003,12,10] )
from and to are, obviously, required.
Optionally, you can specify a custom step with the step key, for example:
$i = Date::Calc::Iterator->new( from => [2003,12,1], to => [2003,12,31],
step => 7 ) ;
will iterate on December 2003, week by week, starting from December 1st.
Returns the next date; in list context it returns an array containing
year, month and day in this order, or undef if iteration is over;
in scalar context, it returns a reference to that array, or undef
if iteration is over.
The wonderful Date::Calc module, on top of which this module is made.
DateTime::Event::Recurrence and all the DateTime family from
Marco Marongiu, <email@example.com>
Thanks to Steffen Beyer, for writing his Date::Calc and for allowing
me to use his namespace.
Blame on me, for being so lazy (or spare-time-missing) that I didnt
make this module compatible with the Date::Calc::Object interface.
COPYRIGHT AND LICENSE
Copyright 2003 by Marco Marongiu
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
|perl v5.20.3 ||ITERATOR (3) ||2004-03-17 |
Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.