Date::Calc - Gregorian calendar date calculations
Keep it small, fast and simple
This package consists of a C library and a Perl module (which uses the C library, internally) for all kinds of date calculations based on the Gregorian calendar (the one used in all western countries today), thereby complying with all relevant norms and standards: ISO/R 2015-1971, DIN 1355 and, to some extent, ISO 8601 (where applicable).
(See also http://www.engelschall.com/u/sb/download/Date-Calc/DIN1355/ for a scan of part of the "DIN 1355" document (in German)).
The module of course handles year numbers of 2000 and above correctly ("Year 2000" or "Y2K" compliance) -- actually all year numbers from 1 to the largest positive integer representable on your system (which is at least 32767) can be dealt with.
This is not true, however, for the import/export functions in this package which are an interface to the internal POSIX date and time functions of your system, which can only cover dates in the following ranges:
01-Jan-1970 00:00:00 GMT .. 19-Jan-2038 03:14:07 GMT [Unix etc.]
01-Jan-1904 00:00:00 LT .. 06-Feb-2040 06:28:15 LT [MacOS Classic]
(LT = local time)
Note that this package projects the Gregorian calendar back until the year 1 A.D. -- even though the Gregorian calendar was only adopted in 1582, mostly by the Catholic European countries, in obedience to the corresponding decree of Pope Gregory XIII in that year.
Some (mainly protestant) countries continued to use the Julian calendar (used until then) until as late as the beginning of the 20th century.
Finally, note that this package is not intended to do everything you could ever imagine automagically for you; it is rather intended to serve as a toolbox (in the best of UNIX spirit and traditions) which should, however, always get you where you want to go.
See the section "RECIPES" at the bottom of this document for solutions to common problems!
If nevertheless you can't figure out how to solve a particular problem, please let me know! (See e-mail address at the end of this document.)
What's New in This Release: [ read full changelog ]
· Date::Calc has become a wrapper which tries to load Date::Calc::XS (the C/XS part it used to consist of), and failing that, loads Date::Calc::PP, which is part of this release (and which used to be Date::Pcalc).
· Moreover, the language is not a global setting anymore, and a new "normalized" mode has been added.