The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Range::Date - Ranges as applied to dates

SYNOPSIS

 use Range::Date;
 
 # Create a new range
 my $range = Range::Date->new('1970-01-01', '2012-02-27/2012-03-02');
 
 # Test if a value is in range
 print "in range\n"     if  $range->in('2012-02-29');
 print "not in range\n" if !$range->in('2012-12-21');
 
 # Add values to range
 $range->add('2012-02-24/2012-02-26');
 
 # Get full list of values
 my @list = $range->range();
 print join q{ }, @list;
 # Prints:
 # 1970-01-01 2012-02-24 2012-02-25 2012-02-26 2012-02-27 2012-02-28 ...
 # 2012-02-29 2012-03-01 2012-03-02
 
 # Get collapsed string representation
 my $string = $range->range("\n");
 print "$string\n";
 # Prints:
 # 1970-01-01
 # 2012-02-24/2012-03-02
 
 # Get range size
 my $size = $range->size();
 print "$size";                     # Prints: 9

DESCRIPTION

This module implements ranges of dates using the same API as other Range::* modules.

Input date formats are subset of ISO 8601; only two are supported: YYYY-MM-DD and YYYY-MM for month-only dates.

METHODS

See Range::Object.

DIAGNOSTICS

Invalid input date

add() will throw this exception when input date item is invalid. This could mean either invalid date format or invalid date, i.e. Feb 29th on non-leap year.

Invalid input date in range

add() will throw this exception when there is invalid date in input range.

Last date in range cannot be earlier than first date

add() will throw this exception if date range is reversed, i.e. last comes first.

Invalid input range

This exception is thrown when two dates comprising a range appear to be valid but Date::Range fails to create a new range.

Can't mix YYYY-MM and YYYY-MM-DD input formats

add() will throw an exception with this message if input range contains both month-only and full date. This is more a sanity check than technical limitation; mixing two formats is probably the result of an error.

Invalid input 'item': no ISO 8601 dates found

This exception is thrown by add() when it is fed with something that is not a date in ISO 8601 format.

DEPENDENCIES

This module is dependent on the following modules: List::Util, Date::Simple, Date::Range.

BUGS AND LIMITATIONS

Only two formats of dates are supported out of ISO 8601 standard.

Adding a range that intersects already existing range will not result in creation of a wider range; current implementation will store new range along with existing one and then return both of them. This needs to be resolved in subsequent releases.

There are no known bugs in this module. Please report problems to author, patches are welcome.

AUTHOR

Alexander Tokarev <tokarev@cpan.org>.

LICENSE AND COPYRIGHT

Copyright (c) 2011 Alexander Tokarev.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.