# Copyright (c) 1995-2014 Sullivan Beck. All rights reserved.
# This program is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.

=pod

=head1 NAME

Date::Manip::Changes5 - changes in Date::Manip 5.xx

=head1 SYNOPSIS

This describes the changes made to the Date::Manip module up to the
time that 6.00 was released.  Because 6.00 required a newer version
of perl (5.10 or higher), the old version was maintained.

When Date::Manip 6.10 was released, both versions were bundled
together (though how it was bundled changed when 6.14 was released).

This document describes all changes made to the old version of
Date::Manip.

For the most part, Date::Manip has remained backward compatible at
every release, but occasionally, a change is made which is backward
incompatible. These are marked with an exclamation mark (!).

=head1 VERSION 5.65 (Released with 6.37)

As of December 2012, Version 5 of Date::Manip will no longer be modified.
The 5.xx version was updated to 5.65 (but no changes were made), and this
version is expected to be the final release in the 5.xx series.

The one exception is that if someone submits a patch that applies cleanly
and causes zero failures in the test suite, I will consider adding it on
a case-by-cast bases.

Please use Date::Manip 6.xx instead.

=head1 VERSION 5.64 (Released with 6.32)

=over 4

=item Better handling of '0000' timezone

Applied a patch supplied by Ed Avis that improves handling of the '0000' timezone..

=back

=head1 VERSION 5.63 (Released with 6.26)

=over 4

=item Fixed business mode calculation

Applied a patch that I received some time ago to fix a business
mode calculation.  Steve Tempest

=back

=head1 VERSION 5.62 (Released with 6.21)

No changes

=head1 VERSION 5.61 (Released with 6.20)

No changes

=head1 VERSION 5.60 (Released with 6.14)

=over 4

=item B<Fully integrated with 6.xx>

As of Date::Manip 6.14, the 5.xx release is fully integrated into the
distribution. Both will be installed automatically and you can switch
between them (if you have a recent version of perl). This simplifies
the package management process considerably. The downside is that
Date::Manip 6.xx will be installed, even if you do not have a recent
version of perl and cannot use it.

=back

=head1 VERSION 5.59 (Released with 6.12)

=over 4

=item Test fixes

Fix tests to work better on windows.

=back

=head1 VERSION 5.58 (Released with 6.11)

=over 4

=item Test fixes

Fixed a bug in some of the tests that were causing two tests to
fail.  JD

Explicitly set TZ in all tests to avoid some failures (it got left out
of a few when it was bundled with 6.10).

=back

=head1 VERSION 5.57 (Released with 6.10)

=over 4

=item B<(*) Combined 5.xx and 6.xx>

As of 6.10, Date-Manip-6.xx will contain both the Date::Manip 5.xx and
6.xx modules. If perl 5.10 or higher is available, the 6.xx version
will be installed. For older versions of perl, the 5.xx version will
be installed.

This will allow all of the automatic module tools to work correctly.

=item Bug fixes

Fixed a bug where years earlier than 1000 AD failed in
calculations.  John

=item Time zone fixes

Improved time zone detection.  Stepan Kasal

=item Documentation fixes

Minor improvements.  Josef Kreulich

=back

=head1 VERSION 5.56 (2010-02-24)

=over 4

=item Bug fixes

Date_PrevWorkDay and documentation fix.  RT #17005

I accidentally included a require 5.10 which made Date::Manip not work
with earlier versions of perl.  Nicholas Riley

=back

=head1 VERSION 5.55 (2010-02-22)

=over 4

=item B<(*) Added time zone abbreviations>

Date::Manip 5.xx now includes all of the time zone abbreviations from
version 6.xx (i.e. all of the abbreviations from the Olsen database).

=item Documentation fixes

Typo fix.  ddascalescu

=back

=head1 VERSION 5.54 (2008-05-09)

=over 4

=item Released

=back

=head1 VERSION 5.53 (DEVELOPMENT)

=over 4

=item Bug fixes

Fix so it won't fail with "Too early to specify a build action"

=item CPANTS changes

Final changes to meet requirements on http://cpants.perl.org/

=back

=head1 VERSION 5.52 (2008-05-08)

=over 4

=item Released

=back

=head1 VERSION 5.51 (DEVELOPMENT)

=over 4

=item Bug fixes

Fixed bug where the wrong version was in Build.PL

=item CPANTS changes

Additional changes to meet requirements on http://cpants.perl.org/

=back

=head1 VERSION 5.50 (2008-05-05)

=over 4

=item Released

=back

=head1 VERSION 5.49 (DEVELOPMENT)

=over 4

=item New features

Added "ereyesterday".  Ed Avis

=item Time zone fixes

Added time zones.  Damyan Ivanov, Ernesto Hernandez-Novich, Gregor
Herrmann, Nicholas Riley, Enrique Verdes, Alexander Litvinov

=item Documentation fixes

Corrected typo in %G and %L format descriptions.  Troy A. Bollinger

=item CPANTS changes

Added Build.PL and several other things to meet requirements on
http://cpants.perl.org/

=back

=head1 VERSION 5.48 (2007-11-27)

=over 4

=item Released

=back

=head1 VERSION 5.47 (DEVELOPMENT)

=over 4

=item Bug fixes

Fixed the version number.  John R. Daily

Fixed a warning when the date command not present.  Daniel Hahler

Fixed a bug where recurrences of the form 0:1*, 0:0:1*, etc.,
incorrectly required a base date.  Gerry Lawrence

Fixed a bug where "substring" was used instead of "substr".

=item Time zone fixes

Fixed a problem in the WEST time zone.  Cristina Nunes

Added time zone.  Kimmo R. M. Hovi

=item Documentation fixes

Revised some of the documentation about Y2K (given that it's in the
past) and the 2007 US daylight saving time rule changes.

=back

=head1 VERSION 5.46 (2007-02-21)

=over 4

=item Released

=back

=head1 VERSION 5.45 (DEVELOPMENT)

=over 4

=item New features

Added "overmorrow".  Ed Avis

=item Bug fixes

Fixed bug in parsing ISO 8601 dates.  Paul Schinder

Fixed a bug in UnixDate for years before 1000 AD.  Joaquin Ferrero

Fixed a bug where "today" wasn't case insensitive.  Pedro Rodrigues

Fixed a bug where business/approximate mode wasn't correctly used in
DateCalc.  Mark T. Kennedy

Bug in DateCalc where you couldn't pass undef as the errref.  Alex Howansky

Bug where cygwin wasn't using the date command.  Rafael Kitover

=item Time zone fixes

New time zones.  Khairil Yusof, Andy Spiegel, Ernesto Rapetti

New time zones.  Robin Norwood

Fixed Russian time zones.  Yuri Kovalenko

=item Language fixes

Language fix for Danish.  Claus Rasmussen

Language fix for German.  Andreas Dembach

=item Documentation fixes

Minor documentation improvement.  Caminati Carlo

Lots of spelling fixes.  Asaf Bartov

=back

=head1 VERSION 5.44 (2005-06-02)

=over 4

=item Released

=back

=head1 VERSION 5.43 (DEVELOPMENT)

=over 4

=item B<(!) (*) Recurrences revisited>

The behavior of some elements of recurrences changed. These included
making the week element (N) refer to the Nth occurrence of a day of the
week in the week, month, or year. It is now possible to look at the
3rd Friday of every month for example.

Y-0-WOY-DOW now refers to the WOY'th occurence of DOW instead of the
ISO 8601 date Y-W(WOY)-DOY. Also, changed Y-0-WOY-0 to refer to the
WOY'th occurence of FirstDay, and got rid of the MW and MD flags. Many
other similar changes.

=item B<(!) Changed %x format in UnixDate>

The %x format used to be equivalent to %D (%m/%d/%y), but it has
been modified to use the DateFormat config variable, so it may return
%d/%m/%y if a non-US DateFormat is specified.

=item New features

Added TodayIsMidnight.  Reuben Thomas

Added "approx" mode to Delta_Format and reversed change to default
Delta_Format behavior to the one from version 5.40.  Based on
discussion with Adam Spiers.

Added %O UnixDate format.  Martin Thurn

=item Bug fixes

Fixed a bug is ParseRecur where values passed in were no overriding
old values in the recurrence.  Scott Barker (reported to the Debian
bugs list).

Fix for a potential problem in the "0000" time zone.  Ed Avis

Changed taint check to be the one in persec(1).  Max Kalika

Minor fix so DateInit("VAR=") will work.  Thomas Bohme

Fixed a bug where business mode was kept operative even after the
calculation was over.  Emiliano Bruni

Minor change to run under cygwin.  Niel Markwick

Minor VMS fix.  Martin P.J. Zinser

Small fix to taint checking.  David Worenklein

Fixed a problem where deltas were getting misinterpreted as dates.
 Harry Zhu

Fixed a bug in ParseRecur where "last day of every March" couldn't
be done.  Andras Karacsony

Fixed a bug in business mode calculations.  Tracy L Sanders

Sorted all events and dates returned by Events_List.  This fixes
problems with tests on some versions of perl.  Tulan

Modified %x UnixDate format to use DateFormat config variable.
Matt Lyons

=item Time zone fixes

Fixed a problem with single character military time zones (T and W)
conflicting with ISO 8601 T and W dates.  Hugo Cornelis

Small correction to Brazil time zones.  John McDonald

Added time zones.  Michael Wood-Vasey, Don Robertson, Michael D. Setzer
II, Andres Tarallo

=item Language fixes

Fixed German translations.  Oliver Scheit

Minor corrections to Italian.  Nicola Pedrozzi

Added the language Catalan.  Xavi Drudis

=item Documentation fixes

Minor doc fixes  Reuben Thomas, Ed Avis, Thomas Winzig

Clarified documentation on %W/%G/%U/%L formats.  Joel Savignon

=back

=head1 VERSION 5.42a 2003-07-03

=over 4

=item Test fixes

A quick fix to replace a faulty test.

=back

=head1 VERSION 5.42 (2003-07-02)

=over 4

=item Released

Number changed to distinguish between the development release (5.41)
and the official release.

=back

=head1 VERSION 5.41 (DEVELOPMENT)

As of 5.41, odd numbered releases are development (and appear only on
my page). Even number releases are official releases submitted to
CPAN.

=over 4

=item B<(!) Changed path separator for VMS>

Since ":" is used in some VMS paths, it should not have been used as
the path separator.  It has been changed to a newline ("\n") character.

=item B<(!) Delta_Format behavior changed>

The entire delta is exact if no month component is present
(previously, no year or month component could be present).  Due to
discussion with Tim Turner.

=item Bug fixes

Small patch for OpenVMS.  Martin P.J. Zinser

Minor enhancement to ParseRecur.  Randy Harmon

Fixed a bug involving business deltas with negative hours.  Ludovic
Dubost

Added some support for NetWare.  Chris Shields

Applied some robustness patches.  Ed Avis

Fixed a bug with years <1000.  Jonathan Callahan

Patch to make Manip.pm -Mstrict clean and better VMS support.
Peter Prymmer

Fixed a bug in "1st Saturday of 2005" format.  Maurice Aubrey

Taint check insecure $ENV{PATH} fix.  Ed Avis

Patch to allow deltas of the form "+ -1 day" to work.  Ed Avis

Removed ampersands from function calls in documentation to fit new
perl coding standards.  Bill Pollock

Fixed a bug where spaces in a date caused problems in German (due
to the number 1st, 2nd, etc. being 1., 2., etc.).  Erik Roderwald

=item Time zone fixes

Minor bug fix where /etc/time zone not correctly read.  Jacek Nowacki

Made the UnixDate %Z format work with numeric time zones.  Michael Isard

Fixed bug where -HH:MM and +HH:MM were not being accepted as valid
time zones.  Hank Barta

Fixed a bug where time zones -HH:MM weren't handled in ISO 8601 dates.
Ed Avis

Added some help for VMS time zones.  Don Slutz

Added some checking to the time zone determination.  Ed Avis

Added time zones.  David Coppit, Daniel Serodio, Fabian Mandelbaum,
Raul Dias, Pedro Melo CUNHA, Roman Y Malakhov, David Whiting, Khaled
Mostaguir, Jason King

=item Language fixes

B<(*) Replaced all non-ASCII characters with hex representations to avoid
the malformed UTF-8 character warnings. Ed Avis>

Added Russian translation.  Dapi

Additions to Dutch translation.  Willem

Patch to French support.  Patrick Turmel

Added Tues/Thur abbreviations. Martin Thurn

Added Turkish. Giray

Added Danish.  Jesper Dalberg
   A patch for Danish was send by Jorgen Norgaard previously, and
   I somehow overlooked it. I apologize for that.

=item Test fixes

Added runtests.bat contributed by Lon Amick

=item Documentation fixes

Minor doc fix.  Jeremy Tietsort

Fixed spelling of Veteran's day.  Dirk Eddelbuettel

Documentation improvements.  James Olsen

=back

=head1 VERSION 5.40 (2001-06-07)

=over 4

=item New features

Added support for negative values is "epoch SECS" type dates.
Larry Warner

Added NWD/PWD/DWD flags to ParseRecur.  Peter Wyngaard

=item Bug fixes

Fixed a warning.  Edward Avis

Fixed a bug where the date wasn't rolling over when parsing dates
containing only times.  James L. Gordon

Fixed a bug where some times were defaulting to the current time
instead of 00:00:00.  Edward Avis

Fixed a bug in Date_NthDayOfYear with decimal days.  Olga Polyakov

Fixed a bug where ParseDateDelta returned a delta if nothing was
passed in.  Jim Hranicky

Fixed a bug where noon was case sensitive.  Bion Pohl

Fixed a bug where dateTtime wasn't parsed.  Jeremy Brinkley

Fixed a bug in holiday parsing involving recurrences.  Jerry Wilcox

Fixed a bug where an invalid date passed to Date_IsWorkDay produced
an error message.  Mark Rejhon

Fixed a bug where EraseHolidays wasn't taking affect correctly.
Chateauvieux Martial

Fixed a bug where the list produced by Date_Init couldn't be passed
back in to Date_Init.  James Elson

=item Time zone fixes

Added `date +%Z` support in Date_TimeZone.  Mike Bristow

Fixed a warning if the time zone is supplied as a +HHMM format.
Viola Mauro

Fixed South African time zone.  David Sieborger

=item Documentation fixes

Added an example.  Philip Jones

=back

=head1 VERSION 5.39 (2000-06-27)

=over 4

=item Bug fixes

`date` uses the user's path unless taint checking is on.

@::DatePath used instead of @Date::Manip::DatePath incorrectly.
Fixed by John Labovitz.

Fixed a bug where times such as "5 seconds ago" were not changing
over time.  Matthew R. Sheahan

=item Time zone fixes

Added /etc/time zone support to &Date_TimeZone.  Dirk Eddelbuettel

Added time zones. Dirk Eddelbuettel, Eli Selinger

=back

=head1 VERSION 5.38 (2000-05-23)

=over 4

=item B<(*) Added Events>

Added Events section to config file and Events_List routine.  Prompted
by Greg Schiedler and paid for by Alan Cezar.

=item B<(!) Removed Date_DaysSince999>

The Date_DaysSince999 function (deprecated in 5.35) has been removed.

=item New features

Added support for ISO8601 dates of the format dateTtime.  Jason Pierce

Got rid of the "use Cwd" and ENV{PATH} lines which means no more taint
problems.

=item Bug fixes

Fixed "dofw" format to return the day of the current week as documented
instead of next week.  Dennis Ingram

Fixed a bug where dates in years 1900, 1800, etc. (but not 2000 or other
400th years) were off by one day in DayOfWeek.  Noble Thomas

Fixed a bug in ParseRecur (2-digit years not treated correctly).
Brian Rectanus

=item Time zone fixes

Added time zones.  Nelson Ferreira, David Harper

=item Documentation fixes

Fixed some typos.  Thanks to Alex Kapranoff

Typo fixed.  Jim Hranicky

=back

=head1 VERSION 5.37 (2000-02-14)

=over 4

=item Bug fixes

Set ENV{PATH} to help with taint checking.  Joe Lipson

Fixed a serious bug where HH:24:00 was broken due to support from 24:00:00.
Scott Egashira

=item Time zone fixes

Fixed the sign on the military time zones.  John Scott

=back

=head1 VERSION 5.36 (2000-01-21)

=over 4

=item New features

Added support for 24:00:00 to ParseDate.  William H Asquith

=item Bug fixes

Fixed a bug in ParseRecur. Lewis Tsao

Fixed a bug is UnixDate (%l format).  Jon Hedley

Fixed a bug in Date_GetNext/Prev.  Christoph Haas

Fixed a bug in Date_IsHoliday.  Report and patch by Rolf Beutner

Fixed a bug in UnixDate.  Patch by Kurtis D. Rader

Rewrote IsInt routine based on discussion with Sean Hunter
(approximately 30% faster on a SPARC).

=item Time zone fixes

Added time zone.  Paul Arzul

=item Documentation fixes

Fixed a documentation problem with Date_ConvTZ.  Diab Jerius

=back

=head1 VERSION 5.35 (1999-07-06)

=over 4

=item B<(!) Deprecated Date_DaysSince999>

In fixing support for the years 0001-0999, I rewrote Date_DaysSince999 to
be Date_DaysSince1BC.  The Date_DaysSince999 function will be removed.

=item B<(*) (!) Added PathSep variable>

In order to better support Win32 platforms, I added the PathSep config
variable.  This will allow the use of paths such as "c:\date" on Win32
platforms.  Old config files on Win32 platforms (which were not working
correctly in many cases) may not work if they contain path information to
the personal config file.

=item B<(*) Recurrences now support flags>

Flags for modifying recurrence dates are now supported.

=item B<(*) Improved holiday support considerably>

Added support for recurrences and one-year-only holidays (the latter
requested first by Vishal Bhatia.

=item B<(*) Date_Init improved>

Date_Init can now return a list of config variables if called in array
context.  Based on a suggestion by Matt Tuttle.

=item New features

Modified Date_GetPrev/Date_GetNext to take $curr=2.

Now parses the Apache log file format "dd/mmm/yyyy:hh:mm:ss (time zone)".
Mark Ferguson

Added OS/2 support.  Michael B. Babakov

Added Date_IsHoliday routine.  Joe Pepin

Added recurrence support for Easter (first suggested by Abigail).

=item Bug fixes

Made "epoch" not case sensitive and fixed a bug where it would fail in
some languages.  Caught because of Iosif's thorough Romanian test file.

Fixed a problem where "in 5 days/weeks/months" sometimes wouldn't get
correctly parsed in other languages.  Caught because of Iosif's
thorough Romanian test file.

Fixed a weakness in ParseDateDelta brought out by the Romanian delta
test file.

Fixed a bug causing warnings in the beta version of perl.  Patch by
Paul Johnson.

Fixed support for years 0000-0999.  Requested by Chris Vaughan

Several recurrence bug fixes.

Put all the my'ed global variables in a couple hashes to clean up the
namespace and to make a few future enhancements easier to do.

Fixed a bug where business weeks weren't being used correctly.  Qian
Miao

Fixed a serious typo in the DaysSince1BC routine.  Qian Miao

Fixed Veteran's day, added Good Friday (off by default).  Peter Chen

Cleaned up holiday variables and re-did holiday routines.

=item Time zone fixes

Added time zones.  Oded Cohen

=item Language fixes

Added Romanian support (including 2 test files).  Iosif Fettich

Corrected Swedish translations.  Danne Solli

Some fixes to German translations.  Peter Ehrenberg

Added Italian.  Nicola Pedrozzi

=item Test fixes

Added recurrence test suite

=item Documentation fixes

Several documentation updates.

New recurrence documentation.

=back

=head1 VERSION 5.34 (1999-04-13)

=over 4

=item B<(!) (*) All Date::Manip variables are no longer accessible>

Previously, Date::Manip variables were declared using a full package
name.  Now, they are declared with the my() function.  This means that
internal variables are no longer accessible outside of the module.
Based on suggestion by Tom Christiansen

=item B<(!) Week interpretation in business mode deltas>

A business mode delta containing a week value used to be treated as 7 days.
A much more likely interpretation of a week is Monday to Monday, regardless
of holidays, so this is now the behavior.

=item B<(!) %z UnixDate format>

The %z UnixDate format used to return the time zone abbreviation.  It now
returns it as a GMT offset (i.e. -0500).  %Z still returns the time zone
abbreviation.  Suggested by Tuc.

=item B<(!) Formats "22nd Sunday" returns the intuitive value>

The date "22nd Sunday" used to return the Sunday of the 22nd week of the
year (which could be the 21st, 22nd, or 23rd Sunday of the year depending
on how weeks were defined).  Now, it returns the 22nd Sunday of the year
regardless.

=item B<(!) Separator in DD/YYmmm and mmmDD/YY formats no longer optional>

Previously, the date "Dec1065" would return Dec 10, 1965.  After
adding the YYYYmmm and mmmYYYY formats, this was no longer possible.
The separator between DD and YY is no longer optional, so

   Dec1065     returns December 1, 1065
   Dec10/65    returns December 10, 1965

=item B<(*) Date_Cmp added>

In one of the next versions of Date::Manip, the internal format of the
date will change to include time zone information.  All date
comparisons should be made using Date_Cmp (which currently does
nothing more than call the Perl "cmp" command, but which will
important when comparing dates that include the time zone).

Added now in response to a question by Al Sorrell (I should have added
it earlier).

=item New features

Added exact business mode.  Ian Duplisse

Added "mmmYYYY" and "YYYYmmm" formats.  As a result, "DDYYmmm" and
"mmmDDYY" formats changed to "DD/YYmmm" and "mmmDD/YY" as described
above.  David Twomey

=item Bug fixes

Fixed a bug where a date passed in as an array wasn't getting the
date removed from the array.  Rick Wise

Added tests for MPE/iX OS.  John Testa

Fixed a bug where WorkDayBeg=8:00 went into an infinite loop.
Mark Martinec

Changed a business week to be the same as an exact week.  Abigail

Fixed a bug where "Sunday week 0" didn't work (only affected week 0)
Gerald Rinske

Minor bug (my variable declared twice).  Paul J. Schinder

Fixed a bug where "epoch SECONDS" was getting parsed wrong (for SECONDS
which could be interpreted as an ISO-8601 date).  N. Thomas

Fixed a problem where init files were not being read.  Mike Reetz

=item Time zone fixes

At the request of the UN, I added the SAT time zone.  :-) Howard
Hendler

Fixed a bug where time zones were converted multiple times if ConvTZ
was set and DateCalc called.  Steven Hartland

=item Language fixes

Added Portuguese.  Rui Pedro da Silva Leite Pereira

=item Documentation fixes

A number of typos fixed.  Ron Pero

=back

=head1 VERSION 5.33 (1998-08-20)

=over 4

=item Bug fixes

Fixed a bug where "1 month ago" was no longer working (and added it to
the test cases).  This broke when I fixed the "-1second" bug in the
previous version.  A result of this is that a number of "deltas" can
be parsed as dates (i.e. &ParseDate("1 hour 20 minutes ago") is
equivalent to &DateCalc("now","1 hour 20 minutes ago")).  Only text
deltas can be used in this way (i.e. &ParseDate("-0:0:0:0:1:20:0")
will not work).

=item Language fixes

Added Spanish support.  Bautista Jasso Javier

=back

=head1 VERSION 5.32 (1998-08-17)

=over 4

=item B<(!) Date_Init arguments>

The old style Date_Init arguments that were deprecated in version 5.07
have been removed.

=item B<(!) (*) DateManip.cnf change>

Changed .DateManip.cnf to Manip.cnf (to get rid of problems on OS's
that insist on 8.3 filenames) for all non-Unix platforms (Windows, VMS,
Mac).  For all Unix platforms, it's still .DateManip.cnf .  It will only
look in the user's home directory on VMS and Unix.

=item New features

Added "in N days" and "N days ago" formats.  Tony Bowden.

Added cYYYY format to YYtoYYYY variable.  Mark Rejhon.

Added 2 days/weeks/months later in both ParseDate and ParseDelta (for
Dutch support).  Abigail.

Added "Y:M:0*-DOM:0:0:0" to ParseRecur.  Jeff Yoak.

=item Bug fixes

Fixed a bug where the deltas could be off by up to a couple minutes in
some rare cases.  Herman Horsten.

Fixed an "uninitialized symbol" warning.  Mark D. Anderson.

Fixed a bug where holidays weren't erased.  Jonathan Wright.

Applied a bug fix from Joe Chapman where the %W/%U UnixDate formats
were frequently wrong.

Several minor fixes and improvements.  Abigail.

Added some VMS support.  Charles Lane.

Fixed a bug which caused a test to fail on some systems.  Charles Lane.

Fixed a bug where "-1second" was treated as a date rather than a delta
in DateCalc.  Kenneth Ingham

Added a bit to the Makefile.PL (as it was distributed in the Win32
Perl Resource Kit).  Murray Nesbitt

=item Time zone fixes

Allowed time zones of the format STD-#DST-#.  Peter Gordon.

Added time zone support for "+0500 (EST)".  Tom Christiansen.

Restricted time zones parsing to 0000-2359 instead of 0000-9999.
Frank Cusack

Added time zones.  W. Phillip Moore, Michael Smith, Samuli Karkkainen

=item Language fixes

Added Polish support.  Ian Wojtowicz.

Added Dutch support.  Abigail.

Added A.M. and P.M. parsing (not just AM and PM).  William W. Arnold.

Fixed a German initialization problem.  Thomas Horster-Moller
and Christian Reithmaier

=item Documentation fixes

Documentation fix.  Peter Gordon.

Minor documentation changes.  Yamamoto Hiroshi.

Added info about the RCS problem.  Supplied by Kipp E. Howard.

=back

=head1 VERSION 5.31 (1998-04-08)

=over 4

=item New features

Added "epoch SECS" format to ParseDateString.  Thanks to: Joshua M. Burgin.

Added a patch by Blair Zajac to make Date_NthDayOfYear work with decimal
days.

=item Bug fixes

Fixed a bug in ParseDateDelta (seems to appear only in 5.005 pre-releases).
Found by Larry W. Virden.

Missed one form in ParseDate.  Noted by Tuc.

Fixed a bug where "15:00:00" couldn't be parsed.  Michael Pizolato.

Split Manip.pm.  New files are HISTORY, TODO, Manip.pod.

Fixed a bug in ParseDateDelta.  Antonio Rosella.

Removed the only occurence of $& (which may speed some things up).  Fix
by Ken Williams.  First suggested by Abigail.

Fixed an overflow bug in doing date calculations with 2 dates more than
70 years apart.  Fix by Vishal Bhatia.

Fixed a bug where "5:00pm" wasn't always parsed correctly.  Thanks to
Jim Trocki.

Fixed a bug in UnixDate (it wouldn't return the correct string for a
format who's last character was '0') noted by Ramin V.

=item Time zone fixes

Relaxed some restrictions on time zones so ISO-8601 dates can use
non-ISO-8601 time zones.  Noted by John Chambers.

Fixed a bug in converting time zones with a minutes field (+1030).  Found
by Paul O.

=item Language fixes

Some fixes to the French translations by Emmanuel Bataille.

Added German support.  Thanks to Andreas C. Poszvek.

=item Documentation fixes

Minor documentation fixes.  Will Linden.

Fixed a documentation problem with Date_GetPrev.  It was still 0-6
instead of 1-7.  Thanks to Robert Klep.

=back

=head1 VERSION 5.30 (1998-01-21)

=over 4

=item B<(!) (*) Delta format changed>

A week field has been added to the internal format of the delta.  It now
reads "Y:M:W:D:H:MN:S" instead of "Y:M:D:H:MN:S".

=item B<(*) Now handles recurring events>

Added ParseRecur.  First suggested by Chris Jackson.

=item New features

All routines can now take either a 2- or 4-digit year.

Added Delta_Format.  First suggested by Alan Burlison.

Added Date_SetDateField.  Thanks to Martin Thurn.

=item Bug fixes

Made the $err argument to DateCalc optional.

Changed the name of several of the library routines (not the callable
ones) to standardize naming.

=back

=head1 VERSION 5.21 (1998-01-15)

=over 4

=item B<(!) Long running processes may give incorrect time zone>

A process that runs during a time zone change (Daylight Saving Time
specifically) may report the wrong time zone.  See the UpdateCurrTZ variable
for more information.

=item B<(!) UnixDate "%J", "%W", and "%U" formats fixed>

The %J, %W, and %U will no longer report a week 0 or a week 53 if it should
really be week 1 of the following year.  They now report the correct week
number according to ISO 8601.

=item New features

Added YYtoYYYY variable.  Suggested by Michel van der List.

Added the UpdateCurrTZ variable to increase speed at the cost of being
wrong on the time zone.

Added British date formats.  Thanks to Piran Montford.
   Monday week
   today week
   as well as some US formats
   in 2 months
   next month

Time can now be written 5pm.  Piran Montford.

Added the TomorrowFirst variable and Date_NearestWorkDay function.

Added UnixDate formats %G and %L to correctly handle the year.  Thanks
to Samuli Karkkainen.

Added ForceDate variable. Based on a suggestion by Christian Campbell.

=item Bug fixes

Now passes Taint checks.  Thanks to Mike Fuhr, Ron E. Nelson, and
Jason L Tibbitts III.

Put everything in a "use integer" pragma.

Added a missing space in the %g UnixDate format.  Thanks to Mike Booth.

Removed all mandatory call to Date_Init (only called when current time
is required).  Significantly faster.

Fixed a bug in Date_ConvTZ.  Thanks to Patrick K Malone.

Fixed a bug in Date_IsWorkDay.

=item Time zone fixes

Fixed some Australian time zones.  Kim Davies.

=item Language fixes

Cleaned up multi-lingual initialization and added the IntCharSet
variable.

Improved French translations.  Thanks to Emmanuel Bataille.

Added "Sept" as a recognized abbreviation.  Thanks to Martin Thurn.

Typo in the French initialization.  Thanks to Michel Minsoul.

=item Test fixes

Fixed the tests to not fail in 1998.

=item Documentation fixes

Documented how to get around Micro$oft problem.  Based on a mail by
Patrick Stepp.

=back

=head1 VERSION 5.20 (1997-10-12)

=over 4

=item B<(*) ISO 8601 support>

ISO 8601 dates are now parsed. This resulted in several other
changes specified below.

=item B<(!) (*) ParseDate formats removed>

As a result of ISO 8601 support, some formats which previously worked
may no longer be parsed since they conflict with an ISO 8601 format.
These include MM-DD-YY (conflicts with YY-MM-DD) and YYMMDD (conflicts
with YYYYMM).  MM/DD/YY still works, so the first form can be kept
easily by changing "-" to "/".  YYMMDD can be changed to YY-MM-DD
before being parsed.  Whenever parsing dates using dashes as
separators, they will be treated as ISO 8601 dates.  You can get
around this by converting all dashes to slashes.

=item B<(!) (*) Week day numbering>

The day numbering was changed from 0-6 (Sun-Sat) to 1-7 (Mon-Sun) to be
ISO 8601 compatible.  Weeks start on Monday (though this can be overridden
using the FirstDay config variable) and the 1st week of the year contains
Jan 4 (though it can be forced to contain Jan 1 with the Jan1Week1 config
variable).

=item New features

Several new parsing formats added, including:
   "Friday"             suggested by Rob Perelman
   "12th"               suggested by Rob Perelman
   "last day of MONTH"  suggested by Chadd Westhoff

Added ParseDateString for speed (and simplicity for modifying ParseDate)

Added %J and %K formats to UnixDate.

Added Date_DaysInMonth.

=item Bug fixes

Reorganized ParseDate more efficiently.

Fixed some incorrect uses of $in instead of $future in ParseDate.
Thanks to Erik Corry.

Added some speedups (more to come).

=item Test fixes

Cleaned up testing mechanism a bit and added tests for ISO 8601 formats.

=back

=head1 VERSION 5.11 (1997-08-07)

Version 5.11 was never released to CPAN.

=over 4

=item Bug fixes

Added one more check for NT perl.  Thanks to Rodney Haywood.

Added some comments to help me keep my personal libraries up-to-date
with respect to Date::Manip and vice-versa.

Fixed a bug which showed up in French dates (though it could happen in
other languages as well).  Thanks to Georges Martin.

Fixed a bug in DateCalc.  Thanks to Thomas Winzig.

Removed the "eval" statement from CheckFilePath which causes a suid
c wrapper program to die when it calls a Date::Manip script.
Thanks to Hank Hughes.

Fixed a bug in business mode calculations.  Thanks to Sterling Swartwout.

Fixed a bug in which "1997023100:00:00" was accepted as valid.  Thanks
to Doug Emerald.

Fixed a bug in which ConvTZ was not used correctly in ParseDate.  Re-did
portions of Date_ConvTZ.  Thanks to Vivek Khera.

Fixed a bug in business mode calculations.  Thanks to Ian Duplisse.

Added $^X check for Win95 perl.  Thanks to Walter Soldierer.

Missed one call to NormalizeDelta so the output was wrong.  Thanks to
Brad A. Buikema.

=item Time zone fixes

Added time zones.  Paul Gillingwater, Rosella Antonio, Kang Taewook

=back

=head1 VERSION 5.10 (1997-03-19)

=over 4

=item Bug fixes

Cleaned up In, At, and On regexps.

Added 2 checks for MSWin32 (date command and getpw* didn't work).  Thanks
to Alan Humphrey.

Fixed two bugs in the DateCalc routines.  Pointed out by Kevin Baker.

Added a check for Windows_95.  Thanks to Charlie W.

Cleaned up checks for MacOS and Microsoft OS's.  Hopefully I'm catching
everything.  Thanks to Charlie Wu for one more check.

Fixed a typo which broke Time%Date (Date=dd%mmm%yy) format.  Thanks to
Timothy Kimball.

=item Time zone fixes

Fixed some problems with how "US/Eastern" type time zones were used.
Thanks to Marvin Solomon.

=item Test fixes

Tests will now run regardless of the time zone you are in.

Test will always read the DateManip.cnf file in t/ now.

A failed test will now give slightly more information.

DateManip.cnf file in t/ now sets ALL options to override any changes
made in the Manip.pm file.

=item Documentation fixes

Added documentation for backwards incompatibilities to POD.

Fixed some problems in POD documentation.  Thanks to Marvin Solomon.

Fixed minor POD error pointed out by John Perkins.

Changed documentation for Date_IsWorkDay (it was quite confusing using
a variable named $time).  Thanks to Erik M. Schwartz.

Fixed typo in documentation (midnight misspelled).  Thanks to Timothy
Kimball.

=back

=head1 VERSION 5.09 (1997-01-28)

=over 4

=item Bug fixes

Upgraded to 5.003_23 and fixed one problem associated with it.

Used carp and changed all die's to confess.

Replaced some UNIX commands with perl equivalents (date with localtime
in the tests, pwd with cwd in the path routines).

Cleaned up all routines working with the path.

=item Test fixes

Tests work again (broke in 5.08).  Thanks to Alex Lewin and Michael Fuhr
for running debugging tests.

=back

=head1 VERSION 5.08 (1997-01-24)

=over 4

=item Bug fixes

B<(*) Fixed serious bug in ConvTZ pointed out by David Hall.>

B<(*) Modified Date_ConvTZ (and documented it).>

=back

=head1 VERSION 5.07p2  1997-01-03

Released two patches for 5.07.

=over 4

=item Bug fixes

Fixed a bug where a delta component of "-0" would mess things up.
Reported by Nigel Chapman.

=item Time zone fixes

B<(*) Can now understand PST8PDT type zones (but only in Date_TimeZone).>

Added lots of time zone abbreviations.

=item Test fixes

Fixed some tests (good for another year).

=back

=head1 VERSION 5.07 (1996-12-10)

=over 4

=item B<(!) UnixDate "%s" format>

Used to return the number of seconds since 1/1/1970 in the current
time zone.  It now returns the number of seconds since 1/1/1970 GMT.
The "%o" format was added which returns what "%s" previously did.

=item B<(!) (*) Internal format of delta>

The format for the deltas returned by ParseDateDelta changed.  Previously,
each element of a delta had a sign attached to it (+1:+2:+3:+4:+5:+6).  The
new format removes all unnecessary signs by default (+1:2:3:4:5:6).  Also,
because of the way deltas are normalized (see documentation on
ParseDateDelta), at most two signs are included.  For backwards
compatibility, the config variable DeltaSigns was added.  If set to 1, all
deltas include all 6 signs.

=item B<(!) (*) Date_Init arguments>

The format of the Date_Init calling arguments changed.  The
old method

   Date_Init($language,$format,$tz,$convtz);

is still supported , but this support will likely disappear in the future.
Use the new calling format instead:

   Date_Init("var=val","var=val",...);

NOTE:  The old format is no longer supported as of version 5.32 .

=item B<(*) Added weeks to ParseDateDelta.>

Suggested by Mike Bassman.  Note that since this is a late addition, I
did not change the internal format of a delta.  Instead, it is added
to the days field.

=item B<(*) Now reads a config file.>

Refer to the Date_Init documentation for details.

=item B<(*) Added business mode.>

See documentation.  Suggested by Mike Bassman.

=item New features

B<(*) Modified how deltas are normalized and added the DeltaSigns config
variable.>

Added %q format "YYYYMMDDHHMMSS" to UnixDate.  Requested by Rob Perelman.
Also added %P format "YYYYMMDDHH:MM:SS".

Added a new config variable to allow you to work with multiple internal
formats (with and without colons).  Requested by Rob Perelman.
See Date_Init documentation.

Added the following formats suggested by Andreas Johansson:
   Sunday week 22 [in 1996] [at 12:00]
   22nd Sunday [in 1996] [at 12:00]
   Sunday 22nd week [in 1996] [at 12:00]

Added a new config variable to allow you to define the first day of
the week.  See Date_Init documentation.

Added the following formats to ParseDate for convenience (some were
suggested by Mike Bassman):
   next/last Friday [at time]
   next/last week [at time]
   in 2 weeks [at time]
   2 weeks ago [at time]
   Friday in 2 weeks
   in 2 weeks on Friday
   Friday 2 weeks ago
   2 weeks ago Friday

Added Date_SecsSince1970GMT, moved the %s format to %o (secs since 1/1/70)
and added %s format (secs since 1/1/70 GMT).  Based on suggestions by
Mark Osbourne.  Note this introduces a minor backward incompatibility
described above.

Date_SetTime now works with international time separators.

Added the %g format (%a, %d %b %Y %H:%M:%S %z) for an RFC 1123 date.
Suggested by Are Bryne.

Added options to delete existing holidays and ignore global config file.

Date_GetNext and Date_GetPrev now return the next/prev occurence of a
time as well as a day.  Suggested by Are Bryne.

In approximate mode, deltas now come out completely normalized (only 1
sign).  Suggested by Rob Perelman.

Added Date::Manip::InitDone so initialization isn't duplicated.

Added a 3rd internal format to store YYYY-MM-DD HH:MN:SS (iso 8601).

Added a config variable to allow you to work with 24 hour business
days.  Suggested by Mike Bassman.

ParseDateDelta now returns "" rather than "+0:0:0:0:0:0" when there is
an error.

=item Bug fixes

B<(*) The d:h:mn:s of ALL deltas are normalized.>

Huge number of code changes to clean things up.

Subroutines now check to see if 4 digit years are entered.  Suggested
by Are Bryne.

Added local($_) to all routines which use $_.  Suggested by Rob
Perelman.

Complete rewrite of DateCalc.

Fixed a bug where UnixDate %E format didn't work with single digit
dates.  Patch supplied by Jyrgen Nyrgaard.

Fixed a bug where "today" was not converted to the correct time zone.

=item Time zone fixes

Fixed bug in Date_TimeZone where it didn't recognize +HHMN type time
zones.  Thanks to Are Bryne.

Added WindowsNT check to Date_TimeZone to get around NT's weird date
command.  Thanks to Are Bryne.

Fixed typo (CSD instead of CST).

Fixed sign in military time zones making Date::Manip RFC 1123 compliant
(except that time zone information is not stored in any format)

=item Test fixes

B<(*) Added test suite!>

=back

=head1 VERSION 5.06 (1996-10-25)

=over 4

=item New features

Added "today at time" formats.

ParseDateDelta now normalizes the delta as well as DateCalc.

Added %Q format "YYYYMMDD" to UnixDate.  Requested by Rob Perelman.

=item Bug fixes

Fixed another two places where a variable was declared twice using my
(thanks to Ric Steinberger).

Fixed a bug where fractional seconds weren't parsed correctly.

Fixed a bug where "noon" and other special times were not parsed
in the "which day of month" formats.

Fixed a minor bug where a few matches were case sensitive.

The command "date +%Z" doesn't work on SunOS machines (and perhaps
others) so 5.05 is effectively broken.  5.06 released to fix this.
Reported by Rob Perelman.

=back

=head1 VERSION 5.05 (1996-10-11)

=over 4

=item New features

Changed deltas to be all positive or all negative when produced by
DateCalc.  Suggested by Steve Braun

Added DateManipVersion routine.

B<(*) Parses RFC 822 dates (thanks to J.B. Nicholson-Owens for suggestion).>

Parses ctime() date formats (suggested by Matthew R. Sheahan).

Now supports times like "noon" and "midnight".

=item Bug fixes

Fixed bug introduced in 5.04 when default day set to 1.  When no
date given, have day default to today rather than 1.  It only
defaults to one if a partial date is given.

Fixed bug where Date_DaysSince999 returned the wrong value (the
error did not affect any other functions in Date::Manip due to
the way it was called and the nature of the error).  Pointed out
by Jason Baker

Dates with commas in them are now read properly.

Fixed two places where a variable was declared twice using my (thanks
to Ric Steinberger).

Hopefully fixed installation problems.

Got rid of the last (I think) couple of US specific strings.

Fixed bug in Date_SetTime (didn't work with $hr,$min,$sec < 10).

Added ModuloAddition routine and simplified DateCalc.

=item Time zone fixes

B<(*) Now supports time zones.>

B<(*) Added Date_ConvTZ routine for time zone support.>

Date_TimeZone will now also check `date '+%Z'` suggested by
Aharon Schkolnik.

=item Language fixes

Added Swedish translation (thanks to Andreas Johansson

The time separators are now language specific so the French can
write "10h30" and the Swedes can write "10.30".  Suggested by
Andreas Johansson.

=item Documentation fixes

Fixed bad mistake in documentation (use Date::Manip instead of
use DateManip) pointed out by tuc@valhalla.stormking.com

Minor improvements to documentation.

Documented the 'sort within a sort' bug.

Fixed type in documentation/README pointed out by James K. Bence.

=back

=head1 VERSION 5.04 (1996-08-01)

=over 4

=item New features

Added support for fractional seconds (as generated by Sybase).  They
are parsed and ignored.  Added by Kurt Stephens

=item Bug fixes

Fixed bugs reported by J.B. Nicholson-Owens
   "Tue Jun 25 1996" wasn't parsed correctly (regexp was case
      sensitive)
   full day names not parsed correctly
   the default day in ErrorCheck should be 1, NOT currd since when
   currd>28, it may not be a valid date for the month

=back

=head1 VERSION 5.03 (1996-07-17)

=over 4

=item Bug fixes

Fixed a couple of bugs in UnixDate.

Declared package variables to avoid warning "Identifier XXX used
only once".  Thanks to Peter Bray for the suggestion.

=back

=head1 VERSION 5.02 (1996-07-15)

=over 4

=item New features

B<(*) Added some internationalization (most of the routines had to be
modified at least slightly)>

=item Bug fixes

Fixed a bug where repeated calls to ParseDate("today") was not reset

Replaced the %Date::Manip::Date variable with a large number of
other, more flexible variables

Rewrote the Init routine

=back

=head1 VERSION 5.01 (1996-06-24)

=over 4

=item New features

Added %F format to UnixDate. Rob Perelman

Added "Date at Time" types

Weekdays can be entered and checked

Two digit years fall in the range CurrYear-89 to CurrYear+10

=item Bug fixes

Reworked a number of the ParseDate regular expressions to make
them more flexible

=item Documentation fixes

Fixed a typo (Friday misspelled Fridat). Rob Perelman

Documentation problem for \$err in DateCalc. Rob Perelman

=back

=head1 VERSION 5.00 (1996-06-21)

=over 4

=item B<(*) Switched to a package.>

Patch supplied by Peter Bray:
   renamed to Date::Manip
   changed version number to 2 decimal places
   added POD documentation

Thanks to Peter Bray, Randal Schwartz, Andreas Koenig for suggestions

=item Bug fixes

Fixed a bug pointed out by Peter Bray where it was complaining of
an uninitialized variable.

=back

=head1 VERSION 4.3 (1995-10-26)

=over 4

=item New features

Added "which dofw in mmm" formats to ParseDate.  Mark Dedlow

=item Bug fixes

Added a bugfix of Adam Nevins where "12:xx pm" used to be parsed
"24:xx:00".

=back

=head1 VERSION 4.2 (1995-10-23)

=over 4

=item New features

UnixDate will now return a scalar or list depending on context

ParseDate/ParseDateDelta will now take a scalar, a reference to a
scalar, or a reference to an array

B<(*) Simple time zone handling>

B<(*) Added Date_SetTime, Date_GetPrev, Date_GetNext>

=item Bug fixes

Added copyright notice (requested by Tim Bunce)

=back

=head1 VERSION 4.1 (1995-10-18)

=over 4

=item New features

B<(*) Added DateCalc>

=item Bug fixes

Changed %DATE_ to %DateManip::Date

B<(*) Rewrote ParseDateDelta>

=back

=head1 VERSION 4.0 (1995-08-13)

B<(*) First public release>

=over 4

=item New features

Added time first formats to ParseDate

=item Bug fixes

B<(*) Switched to perl 5>

Cleaned up ParseDate, ParseDateDelta

=back

=head1 VERSION 3.0 (1995-05-03)

=over 4

=item New features

Added today/tomorrows/etc. formats

B<(*) Added UnixDate>

B<(*) Added ParseDateDelta>

=item Bug fixes

Added %DATE_ global variable to clean some stuff up

Simplified several routines

=back

=head1 VERSION 2.0 (1995-04-17)

=over 4

=item New features

Included ideas from Time::ParseDate (David Muir Sharnoff)

Included ideas from date.pl 3.2 (Terry McGonigal)

B<(*) Added seconds to ParseDate>

=item Bug fixes

Made error checking much nicer

=back

=head1 VERSION 1.2 (1995-03-31)

=over 4

=item New features

Added a few date formats

=item Bug fixes

Made months case insensitive

=back

=head1 VERSION 1.1 (1995-02-08)

=over 4

=item New features

Added leap year checking

Both "Feb" and "February" formats available

=back

=head1 VERSION 1.0 (1995-01-20)

=over 4

=item B<(*) Initial release>

Though not released to the public, the initial released combined
routines from several scripts into one library.

=back

=head1 BUGS AND QUESTIONS

Please refer to the Date::Manip::Problems documentation for
information on submitting bug reports or questions to the author.

=head1 SEE ALSO

Date::Manip        - main module documentation

=head1 LICENSE

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

=head1 AUTHOR

Sullivan Beck (sbeck@cpan.org)

=cut
