Dates are complex enough without times and timezones. This module may
be used to create simple date objects. It handles:
Reject 1999-02-29 but accept 2000-02-29.
=item Interval arithmetic.
How many days were between two given dates? What date comes N days
=item Day-of-week calculation.
What day of the week is a given date?
=item Transparent date formatting.
How should a date object be formatted.
It does B<not> deal with hours, minutes, seconds, and time zones.
A date is uniquely identified by year, month, and day integers within
valid ranges. This module will not allow the creation of objects for
invalid dates. Attempting to create an invalid date will return
undef. Month numbering starts at 1 for January, unlike in C and Java.
Years are 4-digit.
Gregorian dates up to year 9999 are handled correctly, but we rely on
Perl's builtin C<localtime> function when the current date is
requested. On some platforms, C<localtime> may be vulnerable to
rollovers such as the Unix C<time_t> wraparound of 18 January 2038.
Overloading is used so you can compare or subtract two dates using
standard numeric operators such as C<==>, and the sum of a date object
and an integer is another date object.
Date::Simple objects are immutable. After assigning C<$date1> to
C<$date2>, no change to C<$date1> can affect C<$date2>. This means,
for example, that there is nothing like a C<set_year> operation, and
C<$date++> assigns a new object to C<$date>.
This module contains various undocumented functions. They may not be
available on all platforms and are likely to change or disappear in
future releases. Please let the author know if you think any of them
should be public.