The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Written by:
   Sullivan Beck (
Any suggestions, bug reports, or donations :-) should be sent to me.

This describes the changes made to the Date::Manip module in the 6.xx
series of releases.  Major changes are marked with asterisks (*).
Backward incompatible changes are marked with an exclamation mark (!).

For changes in older (5.xx releases), refer to the following documents:

Also, the Changes document is automatically generated from the document:
and that document should be considered the canonical source for all change
related information.

6.95  expected 2024-03-01
  -  Better support for weeks of the year
         Added the Week1ofYear config variable and deprecated the Jan1Week1
         variable. The first week of the year can now be specified much more

  -  Support for the standard POSIX strftime directives in printf
         The Date::Manip::Date::printf method uses a set of directives which
         is similar, but not identical, to the POSIX strftime directives.

         A new config variable Use_POSIX_Printf has been added. If set, the
         printf method will use the POSIX strftime directives more fully
         (see the PRINTF DIRECTIVES section in the Date::Manip::Date POD for
         more information).

         Reported in GitHub #48

  -  Time zone fixes
         Newest zoneinfo data (tzdata 2024a).

6.94  2024-01-09
  -  Time zone fixes
         The 6.93 release didn't include the windows timezone aliases from
         GitHub #46. Pointed out by Mike Capella.

         Newest zoneinfo data (tzdata 2023d).

  -  Documentation fixes
         Fixed a grammatical issue. GitHub #49

6.93  2023-12-01
  -  Bug fixes
         Bug where Date::Manip::TZ::convert wasn't returning an error code
         if an invalid date was passed in. GitHub #47.

  -  Time zone fixes
         Updated the windows timezone aliases. They were out-of-date. See
         GitHub #46.

  -  Test fixes
         In the test scripts, changed RELEASE_TESTING variable. Now use a
         release-specific testing variable rather than RELEASE_TESTING. See
         GitHub #17 in my Locale-Codes module for details.

6.92  2023-06-07
  -  Time zone fixes
         Newest zoneinfo data (tzdata 2023c).

  -  Documentation fixes
         Typo fix. Reported by Derek Terveer

6.91  2023-03-01
  -  Fixed bug where timezone alias wasn't handled
         On linux systems configured to be in a timezone that is an alias,
         the system timezone wasn't recognized, and it defaulted to GMT.
         This is now fixed. Patch supplied by Sandi Wallendahl (GitHub #43)

6.90  2022-12-02
  -  Time zone fixes
         Aliases in the tzdata database were not being added to the timezone
         data. Reported in GitHub issue #40.

         The UTC timezone is now named Etc/UTC instead of UTC to be in line
         with the aliases.

         Newest zoneinfo data (tzdata 2022g).

  -  Language fixes
         Additions to the Polish translation. GitHub issue #41.

         Additions to several languages. GitHub issue #42.

         Added some support for per-language parsing rules to respond to
         GitHub issue #42.

  -  Documentation fixes
         The version numbers in the change log was messed up due to a
         skipped release (no new timezone fixes that time). Fixed.

6.89  2022-09-01
  -  (!) Date::Manip 5.xx interface to be removed
         The old version of Date::Manip (version 5.xx) has been distributed
         as part of the package in order to support versions of perl older
         than 5.10 . I see no valid reason to continue to support that, so
         as of version 7.00, Date::Manip will only include the newer
         interfaces (which require perl 5.10 or newer). There are no plans
         to deprecate the functional interface.

  -  Time zone fixes
         Newest zoneinfo data (tzdata 2022c).

6.88  2022-06-02
  -  Packaging problem.
         I generated a broken MANIFEST file in the previous release.
         Reported in GitHub issue #39.

6.87  2022-06-01
  -  Bug fixes
         The package was being generated with an incorrect MANIFEST file.
         This is now fixed. RT 140075

  -  Time zone fixes
         There were no new timezone fixes on 2022-03-01, so no release made

         Newest zoneinfo data (tzdata 2022a).

6.86  2021-11-15
  -  Change warn to carp
         All warnings are now issued with the carp command rather than warn.
         Requested in GitHub pull request #18, but that request was not used
         because it only changed the uses in the Date::Manip::Date module.

  -  Bug fixes
         Fixed a bug where the next/prev Date::Manip::Recur methods gave
         incorrect results when there are no dates that match the criteria.
         (GitHub #36)

  -  Time zone fixes
         There were no new timezone fixes on 2021-06-01 or 2021-09-01, so no
         releases made then.

         Newest zoneinfo data (tzdata 2021e). (GitHub #37)

6.85  2021-03-01
  -  Test fixes
         Missed some tests that were failing.

6.84  2021-03-01
  -  Time zone fixes
         Newest zoneinfo data (tzdata 2021a).

  -  Language fixes
         Corrections and additions to Italian. Patch supplied by Leo
         Cacciari (GitHub #33)

6.83  2020-12-01
  -  Time zone fixes
         No new zoneinfo data so no release on 2020-09-01.

         Newest zoneinfo data (tzdata 2020d). Requested by Shawn Carroll
         (GitHub #32)

6.82  2020-06-01
  -  Time zone fixes
         Newest zoneinfo data (tzdata 2020a).

6.81  2020-03-01
  -  Messed up the 6.80 package. This release fixes it.

6.80  2020-03-01
  -  Missed Changes entry for previous version.
         Reported by Tina Muller (GitHub #31)

6.79  2019-12-01
  -  Time zone fixes
         Newest zoneinfo data (tzdata 2019c).

6.78  2019-08-29
  -  Time zone fixes
         Newest zoneinfo data (tzdata 2019b).

  -  Documentation fixes
         Fixed a broken link. Mohammad S Anwar (GitHub #29)

6.77  2019-06-01
  -  Time zone fixes
         Newest zoneinfo data (tzdata 2019a).

6.76  2019-03-01
  -  Fixed bug in Date::Manip::Date::list_holidays.
        It was using 'now' instead of the stored date. Douglas DeStafeno

  -  Reordered TZ detection methods
        Moved checking the tzdata files to lower priority to avoid a pretty
        unusual situation in docker. Sven Nierlein (GitHub #20)

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2018i). Requested by Shawn C Carroll
        (GitHub #28)

6.75  2018-12-03
  -  Fixed packaging problems
        Version 6.74 was not packaged correctly. Version wasn't set
        correctly in a few files and there were invalid entries in
        Makefile.PL. RT 127870.

6.74  2018-12-01
  -  Removed travis file from the tarball
        The tarball had a .travis.yml file in it that wasn't in the MANIFEST
        file. Since the MANIFEST file is automatically generated by the perl
        mkmanifest tool, since it didn't see the .travis.yml file, I have
        excluded it from the tarball. Reported by Mohammad S Anwar on GitHub

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2018e)

6.73  2018-09-01
  -  Fixed math on non-64-bit architectures
        Much of the math in Date::Manip::Base is in a 'use integer' section.
        This math can overflow in some cases in non-64-bit architectures.
        Fixed the cases where this would reasonably occur. Reported by
        Daniel Albers (GitHub #22). Also reported and tested in RT 126052.

  -  Bug in normalizing estimated business deltas
        While working on the non-64-bit issue, it uncovered a bug where
        normalizing estimated business deltas was wrong. It had never been
        reported, and it was only off by a couple seconds in some rare

6.72  2018-06-06
  -  Fixed recurrence bug
        The fix in the previous version for a rare recurrence problem broke
        another recurrence form. It is now corrected. Michael Schout (GitHub

  -  Fixed version problem
        The wrong version was included in two files for some reason. This is

  -  Documentation fixes
        Fixed a grammatical error reported by Xavier Guimard (GitHub #19).

6.71  2018-06-01
  -  Fixed an extremely rare problem with recurrences
        It is possible to specify a recurrence that never produces a valid
        date. In these cases, looking for dates went into an infinite loop.
        The MaxRecurAttempts config variable was added which will stop that
        from happening. If no occurrence was found, an error condition will
        be set. Dean Hamstead (RT 123708)

  -  Changes file supported
        It was requested that I include a valid Changes file. I wrote a
        simple script to convert the Change6.pod file into a valid Change
        file. The Changes6.pod file is still the canonical source of this
        information! Requested by H. Merijn Brand

  -  Fix for timezone determination
        On MacOS X High Sierra, some of the timezone files were symlinks,
        but not properly followed. This was fixed by Stu Tomlinson (GitHub

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2018e)

  -  Documentation fixes
        Minor fix provided by Mohammad S Anwar (GitHub #17)

6.70  2018-03-01
  -  (*) (!) Changes to deltas
        Improved handling of deltas to better support the different types of
        deltas. Formalized how the semi-exact portions of the delta are used
        to produce the results that most people would expect.

        The type can now be specified to guarantee several behaviors.
        Changed the arguments (in a backward compatible way) to several
        methods. Explicitly added a new type (estimated) which was there
        previously, but could not be manually specified.

        The convert function continues to support converting from a less
        exact type to a more exact type, but this is deprecated and will be
        removed in version 7.00.

        This was prompted by a bug reported by Ian Gibbs.

  -  (*) (!) Deprecated some parts of Date::Manip::Delta
        The options passed to the set and parse methods have changed. The
        old style will be removed in version 7.00.

        Deltas will also no longer support the 'exact' and 'approximate'
        strings (which have not been supported for some time). These will be
        removed in 7.00 as well.

  -  Deprecation of TZ postponed
        The deprecation of the TZ variable has been postponed to version

  -  Some speed improvements
        I converted some of the functions to use faster algorithms.
        Previously, the steps were worked out using logical time/calendar
        based calculations. These were replaced with non-intuitive numerical
        calculations that gave the same result faster.

  -  Changed behavior if timezone not determined
        If the system timezone cannot be determined using any of the methods
        supplied by Date::Manip, operations will be done in the GMT
        timezone. Previously, Date::Manip would simply fail to load. Based
        on a report by Kent Fredric (RT 123229).

  -  Fixed Makefile.PL
        The list of what what is provided did not include the path to the
        file providing each module. I've fixed the Makefile.PL as well as
        the META files. Graham Knop (GitHub #13)

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2018c)

  -  Documentation fixes
        Rewrote Date::Manip::Delta page to reflect changes, and clean up the
        documentation in general.

6.60  2017-09-01
  -  Bug fixes
        Fixed a bug where if a recurrence had no interval, start and end
        dates passed in to the dates method would not work. PJ-DSI-DevOps
        (GitHub #12).

  -  Documentation fixes
        Clarified Date::Manip::TZ::all_periods. Based on discussion with
        Peter Pfannenschmid.

6.59  2017-06-01
  -  Time zone fixes
        Newest zoneinfo data (tzdata 2017b)

  -  Documentation fixes
        Improved some of the documentation.

6.58  2017-03-01
  -  Better support for $mode in DateCalc.
        DateCalc (in DM6) did not support all values for $mode. Now it does.

  -  Bug fixes
        Parsing a date like 01/02/2016 and calling printf with %e gave '02'
        instead of ' 2'. Robert Wohlfarth (RT 119787).

        Fixed a problem where the tzdata method of determining the timezone
        was producing an error which wasn't correct. John (GitHub #8)

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2017a)

6.57  2016-12-01
  -  Time zone fixes
        Newest zoneinfo data (tzdata 2016j)

  -  Test fixes
        A faulty test was failing in a few places. RT 118705

        Another test was failing due to a perl bug that popped up in 5.25.7.
        Tweaked the test to bypass the bug. Kent Fredric (RT 118862)

6.56  2016-09-09
  -  Test fixes
        A faulty test was failing most places. New release to correct that
        problem. Slaven Rezic (RT 117404)

6.55  2016-09-01
  -  Fixed bug where $::TZ wasn't used
        The $::TZ variable was not getting interpreted correctly when
        searching for a timezone. Steven Hartland (RT 114949)

  -  Fixed bug where recurrences were not parsed correctly
        Passing in incorrect values for a field was not trapped in all cases
        and it led to problems. All values passed in to a recurrence are now
        correctly checked. Albert Hilazo (GitHub #7).

  -  Fixed a bug in some methods of creating new objects
        Some methods of creating new objects based on existing objects did
        not correctly use the existing object. Bug has never been reported,
        but was discovered when adding tests to get 100% coverage.

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2016f)

  -  Test fixes
        Added a number of new tests based on Devel::Cover.

6.54  2016-05-31
  -  Deprecation of Date::Manip 5.xx tests
        By default, the Date::Manip 5.xx tests will no longer run. Changes
        to the timezone data can cause failures. Since Date::Manip 5.xx is
        no longer supported in any way, these tests will no longer run on a
        system where 6.xx can be run. Richard Jelinek.

  -  Deprecation of TZ postponed
        The deprecation of the TZ variable has been postponed to March 2017.
        I decided that 1 year was not enough notice (especially since not
        everyone will have updated Date::Manip since March 2015 when the
        warning was added.

  -  Bug fixes
        Changed requirement for ExtUtils::MakeMaker to 6.67_01. Quin Arnold
        (RT 112286)

        Fixed a bug where a timezone abbreviation was not parsed correctly
        when passed in as a value to the SetDate, ForceDate, or TZ config
        variables. Based on a report in

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2016d)

        Made some improvements to how I handled the timezone data which
        resulted in a few of the default timezones being changed.

  -  Documentation fixes
        Fixed one more typo. Gregor Herrmann (RT 114095)

        Clarified the Config document. Based on a report in

6.53  2016-03-02
  -  Bug fixes
        Date::Manip::Delta::cmp had a bug in it's comparison. Ian Gibbs.

        The secs_since_1970_GMT method was missing a test to see if it was a
        valid object. Michael Stevens (RT 111915)

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2016a)

  -  Documentation fixes
        Lots of typos fixed. I was using podspell to do spell checking, but
        it was discarding too much real text (which wasn't getting checked
        as a result). Switched to pod2text which does a better job. Gregor
        Herrmann (RT 110025)

6.52  2015-12-01
  -  Added date ranges on unmodified dates in Recur
        The date range can now be specified for either the fully modified
        dates, or the unmodified dates. This will make it easier to work
        with holidays in some instances. Based on

  -  Added IWn and NWn recurrence modifiers
        Based on <>.

  -  (!) Reworked holidays slightly
        Previously, every line in the Holidays section defined a unique
        holiday. Now, the names determine the list of holidays.

        It is not allowed to have two separate holidays named exactly the
        same. It IS allowed to have complex holidays that require two (or
        more) lines in the Holidays section to define them completely.

        Based on <>.

  -  Bug fixes
        Fixed a bug where the RecurRange config variable wasn't getting

        Fixed a bug where some deltas were not parsed correctly as dates.
        Salvatore Bonaccorso (RT 109600)

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2015g)

  -  Test fixes
        Added a number of new tests based on Devel::Cover.

6.51  2015-09-01
  -  Changes suggested by perlcritic
        Played with perlcritic and made a few minor changes based on it's
        suggestions. I doubt I will use perlcritic significantly.

  -  (!) Date::Manip::Delta::value now returns an empty string
        If a delta has an error, or no valid delta in it, the value method
        returns an empty string instead of undef. This is to be consistent
        with the Date::Manip::Date::value method which returns an empty

  -  Bug fixes
        Fixed a bug where date/delta calculations with deltas that are too
        large was not working correctly. They now set an error condition and
        fail. Jared Selengut (RT 105737)

        Fixed a bug introduced by the previous patch and luckily discovered
        pre-release by Tom Wyant.

        Fixed code that produced a warning in 5.22.0. Tom Wyant

  -  Improved DM6 ParseDate and ParseDateString
        Added @opts argument. Based on report by Vitaly Shupak (RT 105622).

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2015f)

        Now uses /etc/localtime as a method to determine the local timezone.
        Patch supplied by Tom Wyant (RT 105159) (modified by me). The patch
        uses some code derived from DateTime::TimeZone .

        Clearer message when the date is not valid in the timezone.

  -  Test fixes
        Added a number of new tests based on Devel::Cover. Over the next
        several releases, I intend to continue to add tests until coverage
        is 100%.

  -  Documentation fixes
        Fixed a typo. Gregor Herrmann (RT 105546)

6.50  2015-06-01
  -  Bug fixes
        Not really a bug, but 6.49 got a bunch of NYTprof data bundled with
        it by mistake. It's been removed. Olivier Mengue (RT 103252)

        Fixed a bug where information about whether a date was complete or
        truncated was discarded. Jim Avera

        Fixed a bug where SetDate with a zone alias failed.

        Added the Format_MMMYYYY config variable to allow the truncated
        format mmmYYYY to be parsed instead of mmmDDYY. David W. Morganwalp
        and Glenn Golden (RT 103142)

        Fixed Makefile.PL/Build.PL to correct for a change on perl on
        windows which changes a module prereq requirement. Alexandr Ciornii

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2015d)

        Added aliases for older HP-UX time zones. H. Merijn Brand (RT

  -  Documentation fixes
        Fixed URL for tzdata. Mohammad S Anwar (GitHub #3).

        Better POD formats.

        Fixed a documentation error. Glenn Golden (RT 103966)

6.49  2015-03-01
  -  Added a deprecation warning
        The TZ config variable is going away. Added a deprecation warning.

  -  Some speedups for timezone handling
        Based on a report by Glenn Golden (RT 102284), I have done some
        optimization of the timezone handling code.

  -  Bug fixes
        Added the missing is_date base method to Date::Manip::Base. Mario

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2015a)

  -  Language fixes
        A number of corrections by Nicholas Riley

6.48  2014-12-01
  -  Put repository on GitHub
        Suggested by Gabor Szabo

  -  parse_time now parses ISO 8601 times
        The parse_time routine wouldn't correctly parse ISO 8601 times. This
        is now fixed.

  -  Parsing special dates with timezones now works
        Parsing special date formats with timezones is now supported such

           Christmas at noon PST
           in 3 days at noon PST
           now PST
           epoch 3000000 PST

  -  dm_zdump modified
        To match the newest version of zdump, the gmtoff is now added at the
        end of each line.

  -  Bug fixes
        Fixed a bug in the printf method that would not handle embedded
        newlines correctly (and resulted in an infinite loop if it were
        preceded by a '%'). Henrique Martins

        Fixed a bug where '24:00' was not parsed correctly (though
        '24:00:00' was).

        Fixed a bug where fractional values separated by a comma weren't
        parsed correctly.

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2014j)

6.47  2014-09-01
  -  Time zone fixes
        Newest zoneinfo data (tzdata 2014f)

  -  Language fixes
        Fixed some encoding errors in the language pod documentation.

6.46  2014-07-08
  -  Broken distribution
        The distribution contained an temporary edit file that caused
        problems. Alexandr Ciornii (RT 96459)

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2014e)

  -  Language fixes
        Added some plural abbreviations that were missing. Glenn Golden (RT

6.45  2014-06-05
  -  Fixed a test
        One test was failing (reported by Constantine Peresypkin (RT 96249)
        as well as several CPAN Tester reports).

6.44  2014-06-01
  -  (*) Improvements to UTF8 handling
        A number of changes based on a report and other discussion with Yuri
        Nikulin (RT 93545) including:

        Case insensitive matching of UTF8 strings should work all the time.

        Fixed two significant bugs in regexps for parsing dates.

        Improvements to UTF8 handling.

        Corrected some problems with Russian and added the cp1251 encoding.

        One correction to Romanian.

        Added several new test scripts.

        Preliminary patches were supplied by Yuri.

  -  New features
        Modified the parse_format function to return %+ if desired. Mike

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2014c)

  -  Documentation fixes
        Clarified some DM6 functions. David Close.

        Fixed a typo. Mike Cappella (RT 95619)

6.43  2014-03-03
  -  Several changes to distribution files
        I made several changes to Build.PL, Makefile.PL, META.yml in order
        to improve the quality (or kwalitee) of the module. None of these
        should impact anyone using the module.

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2013i)

  -  Documentation fixes
        Cleaned up some of the Recur documentation. Suggested by Warren
        Young (RT 92794)

6.42  2013-12-02
  -  Added ParseDateFormat function
        Added the ParseDateFormat function to the DM6 functional interface
        in response to Eli Lindsey (RT 89286).

  -  Added Common Log format
        Added the date format used in apache logs: 11/Oct/2000:13:55:36
        -0700 Eli Lindsey (RT 89286).

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2013h)

  -  Bug fixes
        Fixed a bug where dates of the form of a delta with a timezone
        attached (i.e. "1 day ago at midnight UTC") failed. Ludovic Lange
        (RT 89256)

        Fixed a bug where events handling gave a warning if there were no
        events that applied. RT 90344

6.41  2013-09-05
  -  Bug fixes
        Removed a .swp file accidentally left in the package. RT 85845

        Fixed a bug in parse_format where times between 00:00:00 and
        01:00:00 weren't parsed correctly. Ole Nomann Thomsen

        Fixed generated META.* files to not require Module::Build 0.39.
        Carsten Wolff (RT 86137)

        Fixed a bug where parse_format did not work with a '%s' format. Mark
        Keisler (RT 87498)

        Fixed a bug where find_encoding wasn't imported from the Encode
        module. Krishna Subramanian (RT 87665)

        Fixed a bug where recurrences with no interval did not work if a
        start and end date were specified, and no dates fell in that range.
        Jan Pradac

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2013d)

6.40  2013-06-01
  -  Removed PODs
        POD documentation is no longer generated for Date::Manip::TZ::* and
        Date::Manip::Offset::* modules.

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2013c)

6.39  2013-03-01
  -  Added the $mode argument to ParseDateDelta
        The ParseDateDelta function (in functional interface) did not allow
        you to force a parsed delta to semi or approx where appropriate.
        This was added. Based on RT 82991.

  -  Added get_config method
        The get_config method was added to all classes. Suggested by
        Philippe Poilbarbe.

  -  Language fixes
        Fixed a German language problem. Gosta Oelstrom

  -  Documentation fixes
        Documented workaround for dmake problem in strawberry perl.
        Discussed on perlmonks and Martin Thurn (RT 79837).

        Clarified the Examples page. Winston Heng

6.38  2013-01-08
  -  (*) Tar file format corrected
        Problems were reported on several OSes by people unable to install
        Date::Manip (and other modules). It turns out that the version of
        tar distributed by my linux distro (OpenSuSE) uses the 'posix'
        format instead of the traditional 'gnu' format by default. This
        causes problems for some versions of tar. I have had reports from
        OSX, Windows, and SunOS. Future versions of Date::Manip will be
        explicitly distributed in the 'gnu' tar archive format.

        Reported by Jay Allen and John Ralls (RT 80594).

  -  (*) Date::Manip 5.xx end-of-life
        Date::Manip 5.xx is now officially out of support. I will not be
        doing any further work on it. The only exception is that I will
        consider adding user supplied patches on a case-by-case basis.

        If at all possible, please use Date::Manip 6.xx instead.

  -  (!) Removed some deprecated config variables
        The following config variables have been removed.


6.37  2012-12-01
  -  Bug fixes
        Fixed a bug where ISO 8601 format YYYY-WXX-D didn't work if the week
        ended up in December. Gordon Lugauer.

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2012j)

  -  Documentation fixes
        Spelling error fixed. RT 80621

6.36  2012-10-31
  -  Fix version numbers
        This was an interim release to fix the version numbers (6.35 was
        released with all of the version numbers 6.34).

6.35  2012-10-31
  -  Fix PATH
        This version was an interim release to fix the problem with the PATH
        being replaced.

  -  Removed dependency on YAML
        I've reverted the language data files to perl literals instead of
        YAML. Though not quite as easy to maintain, it solves a few
        problems. Patch provided by Christopher Madsen.

  -  Bug fixes
        Last versions fix for RT 78566 overrode the PATH even when that
        wasn't appropriate. This is fixed. Report and patch supplied by Tom
        Wyant (RT 80435).

6.34  2012-09-04
  -  This is a bug fix so that the PATH won't break non-unix installs.

  -  Bug fixes
        Put the PATH inside the Unix section so it doesn't affect non-unix
        environments. Geoff Rowell

6.33  2012-09-01
  -  Improvements to Date::Manip::Delta
         Added convert method. This had been planned since 6.30, but based
         on a discussion with Henrique Martins, I moved it up in priority.

         Cleaned up handling of delta field lengths (they are now only
         calculated once.

         Added cmp method. Henrique Martins

  -  Bug fixes
         The language modules read from the DATA section, but I never closed
         the filehandle. This is fixed now. Patch by Doru Theodor Petrescu

         Added better loading of DM5/DM6 modules. Evan Carroll (RT 78152)

         Added a secure PATH to for taint reasons. In response to Dan
         Pritts (RT 78566)

  -  Time zone fixes
         Now supports timezones in files with spaces where there should be
         underscores. This occurs in RHEL desktop. Dan Pritts (RT 78566)

         Newest zoneinfo data (tzdata 2012e)

  -  Documentation fixes
         Minor fix. Henrique Martins

6.32  2012-06-01
  -  Modified Build.PL
        Build.PL now has better support for building (or not building) HTML
        files. Apparently this is slow on Windows. Patch provide by Manoj
        Kumar (RT 75118)

  -  Bug fixes
        Fixed a bug in business day calculations. Frederic Briere (RT 76336)

        Fixed a bug where Delta/Recur objects weren't correctly created.
        Zsban Ambrus

        Fixed a bug where SetDate/ForceDate config variables could not be
        included in a file. Jerry Wilcox

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2012c).

  -  Documentation fixes
        Better support for UTF-8 in autogenerated language module pod files.

6.31  2012-03-01
  -  Added extended formats to printf method.
        These include the %<A=NUM>, %<a=NUM>, %<v=NUM>, %<B=NUM>, %<b=NUM>,
        %<p=NUM>, and %<E=NUM> formats. Chris Jackson

  -  Can now parse formats where the time and zone are not adjacent
        A string like 'Jan 21 17:13:27 2010 -0400' can now be parsed.
        Requested on perlmonks ('Can Date::Manip parse a unix timestamp'

  -  Added PeriodTimeSep config variable.
        This allows you to use a period as a time separator. Ed Avis

  -  Holidays can be used as date strings
        You can now parse a holiday name in the Date::Manip::Date::parse
        method. For example, parse('Christmas'). Requested by Abigail.

  -  Added new recur modifiers
        Added WDn, IBD, and NBD modifiers.

  -  Added a new date format
        You can now parse '2nd day in May' formats. Randy Harmon

  -  More flexibility in parsing timezones with both offset and abbrev
        If you include both the offset and abbreviation in the timezone
        portion of a date, the parenthesis around the abbreviation are now
        optional, so you can parse both:

           -04:00 (EDT)
           -04:00 EDT

        Requested by Steven Melendez.

  -  Deltas now support fractional values.
        You can now use a delta of 1.5 days. Martin Thurn (RT 42699)

  -  Multiple holidays supported
        A date may now have multiple holidays. Keith Minkler

  -  Bug fixes
        Fixed a bug where abbreviations were not being examined case
        insensitively. Jurgen Muck

        The Holidays section may be safely split across multiple config
        files. A bug prevented this from working before.

  -  Language fixes
        The Norwegian translation was broken due to a typo in the language

        Included complete documentation for each language.

        Fixed a couple problems with Danish. Nicholas Oxhaj

        Added Finnish (from a VERY old mail that I overlooked somehow).
        Iikka Virkkunen

        Cleaned up the values used by printf directives to give the expected

  -  Documentation fixes
        Fixed a typo. Nicholas Bamber

6.30  2012-01-11
  -  (*) (!) Reworked deltas
        Much of the delta code was reworked.

        The constraint that a day is treated as 24 hours was removed (by
        adding the concept of semi-exact deltas) to better handle daylight
        saving time calculations.

        Made cosmetic changes to which signs will be included in a delta to
        make the deltas more readable. Signs which are the same as the next
        higher field will be omitted, even if they cross set boundaries.

        Added support for non-normalized deltas. See the $no_normalize
        option for the parse and set methods.

        Removed limitations on subtract=2 not working with business

        Thanks to discussion on perlmonks, and RT 65774 that prompted me to
        do this. I'd been wanting to do it for some time, but the discussion
        on perlmonks made me realize that this needed to be much higher

  -  (!) Modified Delta_Format
        In conjunction with the above work, added the 'semi' mode to

  -  (!) Removed some deprecated config variables
        The following config variables have been removed.



  -  Time zone fixes
        Newest zoneinfo data (tzdata 2011n). RT 71595

        Corrects a bug where +0000 and -0000 offsets were not parsed
        correctly. Aaron Hall

        The zoneinfo data includes rules more than 20 years in the future,
        so we now store 30 years of future dates instead of 20 to catch
        these rules.

        When parsing the timezone portion of the date, timezone
        abbreviations now take higher precedence than zone names (since that
        is how timezone information is typically specified). That only
        impacts dates where the a timezone name is the same as an
        abbreviation, such as 'CET'.

        Previously, a date with CET in it was interpreted as in the CET
        timezone. Now it is interpreted as in a timezone with the CET

  -  Better handling of undef in DM6
        The date/delta parsing routines in DM6 will now handle an undef
        argument without issuing a warning. Earl C. Ruby III

  -  Bug fixes
        Fixed a bug with the parse_format %f and %i formats. Tommi Rintala

        Fixed a bug where the Date::Manip::Delta::set function didn't work
        to set the month value.

        Fixed a bug where parsing some dates near during a DST change

        Minor bug fix when using Delta_Format. Prompted while investigating
        RT 41095.

6.25  2011-08-31
  -  Relaxed one constraint in ISO 8601 dates
        A time separated by whitespace from the date can use a single digit
        hour. Yuming Philip Xiang

  -  (*) Set official removal dates for old config variables
        Config variables will be removed 2 years after they are deprecated
        (except for the TZ variable which, due to it's wide use, will be
        kept for 4 years).

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2011i)

6.24  2011-06-13
  -  New features
        Spaces are ignored in the SetDate/ForceDate config values. Zsban

  -  Bug fixes
        Fixed a bug where 'in one week' wasn't correctly parsed. E. M.

        Fixed a bug where options passed in to the 'new' as a listref
        weren't handled properly. Zsban Ambrus

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2011g)

6.23  2011-04-15
  -  (!) Renamed one Date::Manip::Recur method
        The Date::Manip::Recur::base method has been renamed to basedate .
        The Date::Manip::Recur::base method should return the
        Date::Manip::Base object like all the other Date::Manip modules.

  -  (*) Reworked holidays defined as recurrences
        Improved dealing with the bootstrap problem of defining holidays,
        especially those that contain business day flags. Mike Tonks

  -  New features
        The printf function will now take multiple format strings and return
        a list of values. Zsban Ambrus

  -  Bug fixes
        Fixed a bug where GlobalCnf wasn't working. Peter Edwards

        Improved error messages in a few cases.

        Fixed a bug where one invalid date/timezone check was ignored.
        Morten Bjornsvik

        Fixed a bug where '$base2 = new Date::Manip::Base $base1' wasn't
        working. RT 67143

        Fixed a bug where passing dates in to the Recur->dates method
        failed. RT 67144

        Fixed a bug where the mode wasn't being preserved correctly for a
        delta. RT 67150

        Fixed a bug in recurrences where a base date outside of a date range
        with a very uncommon recurrence format would not work correctly.

        Fixed a problem where the '%s' printf option didn't work in GMT.
        Jean-Michel Hiver

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2011f)

  -  Documentation fixes
        Fixed two bad recurrence examples in the documentation. Peter
        Edwards and Mike Tonks

6.22  2011-03-07
  -  Time zone fixes
        Newest zoneinfo data (tzdata 2011b)

        Fixed a bug where the gmtoff method of getting the local timezone
        was broken. Martin Zinser.

        Fixed the 'env' method of determining the local time zone to allow
        the value to be an offset of seconds since UTC. This allows the VMS
        SYS$TIMEZONE_DIFFERENTIAL variable to work correctly. Martin Zinser.

        Removed the SYS$TIMEZONE_RULE method from VMS since the value stored
        there is not the name of a timezone (it's a rule in a non-standard
        format). Based on discussion with Martin Zinser.

        Improved the order in which aliases, abbreviations, etc., are tested
        to test current usage before non-current usage (there were a few
        cases where old usages were getting tested before current usage.

  -  Language fixes
        The module will now die if a language module cannot be loaded (most
        likely due to a YAML::Syck issue). Based on discussion with Martin

  -  Documentation fixes
        Added a sample config file document. Based on discussion with Rich

6.21  2011-01-10
  -  New features
        Deltas may now contain spelled out numbers, so 'in 2 weeks' and 'in
        two weeks' will both work. Daniel Shahaf

  -  Bug fixes
        Fixed a bug where week_of_year didn't work in some cases. Chris

        Fixed a minor potential bug. Geraint Edwards.

  -  Time zone fixes
        Updated windows time zone aliases. Daniel Harding

  -  Language fixes
        Added Norwegian. Glenn Sogn

6.20  2010-12-01
  -  (*) (!) Reworked recurrences
        Recurrences were reworked in a (slightly) backward incompatible way
        to improve their usefulness (and to make them conform to the
        expected results). Most recurrences will work the same as
        previously, but a few will differ. Most of this was suggested by Jay

        A recurring event is now calculated relative to the base date, NOT
        relative to a previous event. For example, if a recurrence occurs
        every month, and the base date was Jan 31, then previously,
        recurring events would have been (in a non-leap year):

           D(0)                   = Jan 31
           D(1)  = D(0) + 1 month = Feb 28
           D(2)  = D(1) + 1 month = Mar 28

        The new behavior is:

           D(0)                       = Jan 31
           D(1)  = D(0) + 1*(1 month) = Feb 28
           D(2)  = D(0) + 2*(1 month) = Mar 31

        Previously, if a base date were not specified, it was not determined
        from the date range. Now, the start date of the date range acts as
        the base date.

        The meaning of the base date has changed slightly. It is much more
        meaningful and useful now.

        Added iterator functions. Daniel LaLiberte

        The RecurNumFudgeDays variable is no longer used and is deprecated.

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2010o)

6.14  2010-10-20
  -  (*) Date::Manip 5.xx fully integrated with 6.xx
        Date::Manip 5.xx and 6.xx are both installed automatically, and the
        correct one will be chosen.

  -  Bug fixes
        Fixed a bug where recurrence handling was broken. RT 62128

  -  Documentation fixes
        A lot of documentation was cleaned up to be easier to read, and
        better organized.

6.13  2010-10-13
  -  New features
        Added the input methods to Date::Manip::Date and Date::Manip::Delta.
        Ed Avis.

        The 'date +%z' command will also be used to determine the timezone.
        Oliver Schulze

  -  Bug fixes
        Several changes to try to get rid of a memory leaks reported in RT
        54937. Huge thanks to BrowserUK on perlmonks for help.
        Unfortunately, it ended up being a bug in perl, and will only be
        resolved when that bug is fixed. See the Date::Manip::Problems
        document for more information.

           Reorganized Base/TZ to get rid of circular references.
           Added end blocks to clean some global variables.
           Got rid of switch/given structures.

        Fixed a bug where an incomplete date with 'last' in it was causing
        an error. RT 60138

        Fixed a bug where 'Sunday, 9th Jan 1972' wasn't parsed correctly. RT

  -  Time zone fixes
        Fixed a bug where was generated with the abbreviations in
        the wrong order. Amish Chana.

  -  Language fixes
        French month abbreviations now support periods. Bernard Haerri

  -  Test fixes
        Added tests from RT 29655 to make sure that the problem never

  -  Documentation fixes
        Fixed documentation problem with the new_* methods in
        Date::Manip::Obj. Options must be passed in as \@opts rather than

        Cleaned up some of the documentation.

6.12  2010-09-27
  -  (!) IntCharSet config variable deprecated
        With better support for international character sets, the old
        IntCharSet config variable (which was a bandaid at best) is
        deprecated. Currently, the functionality still exists, but it will
        be removed at some point.

  -  New features
        Added the Encoding config variable.

        Now supports parsing the EXIF date format. Rhesa Rozendaal

  -  Bug fixes
        Fixed Build.PL to not require perl 5.010 since the distribution as a
        whole does not require that (and I want that fact to be in

        Fixed a bug where the Date::Manip::Date::set method was broken when
        setting individual fields. Helmut A. Bender

        Fixed a bug where set didn't work in Date::Manip::Delta. Patch
        provided in RT 59096.

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2010m)

  -  Language fixes
        (*) Converted all language files to UTF-8 and added rudimentary
        support for character encodings. Some assistance by Stephen

        Fixed problem in Polish, Dutch. Stephen Ostermiller

        Extended support for 'nth' up to 53rd. Paco Regodon

        Added some corrections to German. Dieter Lange

  -  Documentation fixes
        Clarified Date::Manip::Recur documentation based on RT 59132.

6.11  2010-04-30
  -  Bug fixes
        Fixed a problem in Build.PL that had an incorrect module

6.10  2010-04-29
  -  (*) Combined 5.xx and 6.xx releases into one distribution
        Because the automatic module management tools cpan/cpanp would try
        to upgrade Date::Manip to the most recent version, and the most
        recent version will only work if perl 5.10.0 or higher is installed,
        both the 5.xx and 6.xx releases are now combined into a single

        This is described more fully in the Date::Manip::Problems document.

  -  (!) Zones specified by offset
        In all operations involving time zones, the time zone must be
        determined. By default, it would take all of the information
        available (date, ISDST, etc.) and determine the most likely time
        zone. It would take every time zone that matched each piece of
        information, starting with those that matched in a standard time
        followed by those that matched in a daylight saving time.

        When zones are specified by an offset, a standard time would always
        match since there are standard time zones that match all year long
        (the military time zones A-Z and the standard time zones of the form
        Etc/GMT+01). As a result, a daylight saving time match would never

        Since (if the date falls during a daylight saving time period) you
        usually want to use a time zone that has that offset in daylight
        saving time, the default is now to check daylight saving time zones
        first, followed by standard times.

        See the Date::Manip::TZ manual (under the zone method) for more

  -  Bug fixes
        Fixed a bug where Date_ConvTZ not working correctly with time zones
        specified by offset. Chris Butler

        Fixed a bug where business mode calculations involving minutes was
        not handled correctly. Damien Moore

        Fixed a bug where business mode calculations failed in some cases.
        RT 56638

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2010i)

        Changed Date::Manip::TZ::zone so "dst" is sometimes the default
        $dstflag. Based on the bug report by Chris Butler.

        OpenUNIX puts a colon at the start of some time zones. It's removed.
        Jean Hassler

  -  Test fixes
        Converted tests to Test::Inter

  -  Documentation fixes
        Fixed a documentation bug in Date::Manip::TZ where "stdonly" was
        listed as the default value for $dstflag, but in actuality, "std" is
        the default.

6.07  2010-02-05
  -  Bug fixes
        Fixed bug in Date_TimeZone where it wasn't returning the time zone.
        Robert Eden

6.06  2010-02-05
  -  Bug fixes
        Minor bug where %Z printf format didn't always work.

        Added support for 5pm back in (it was omitted accidentally). Mark

        Fixed a minor warning. Morten Bjoernsvik

        Some additional speedups.

  -  Time zone fixes
        Newest zoneinfo data (tzdata 2010b)

        Added dm_zdump example script.

        Improved TZ::periods functionality

        Fixed bug in Date_ConvTZ where empty values weren't defaulting to
        local time zone. Robert Eden

        Fixed a couple of problems in the generated time zones for some odd
        cases (America/Resolute and Asia/Tehran).

6.05  2009-12-09
  -  (!) %z format
        In Date::Manip 5.xx, the %z format in UnixDate printed the offset in
        the form -0500. In 6.00, I changed that to -05:00:00, but this broke
        RFC 822 compliance.

        I've changed %z back to -0500, and introduced a new format (%N)
        which returns -05:00:00.

        Incidentally, this is the LAST unused letter, so I am now going to
        have to either stop adding formats, or add some extended format
        syntax. Not sure yet which, but this may involve a backwards
        incompatible change in the future.

  -  (*) Significant speedups.
        Thanks to Moritz Lenz and BrowserUK on perlmonks for suggestions
        (and a number of other people on perlmonks for suggestions that I
        did not end up using, but which provided a great discussion).

  -  Bug fixes
        Fixed a bug in parse_date where the current time was getting used
        instead of the documented 00:00:00

        Bug fix where DateCalc didn't work with $mode in some cases.

        Fixed Makefile.PL/Build.PL to handle Win32::TieRegistry requirement.

        Changed %z printf behavior back to 5.xx and added %N format. Gilles

        Added dm_date example script.

  -  Time zone fixes
        Fixed bug where non-English Windows versions didn't get the time
        zone. Thanks to Rene Schickbauer for testing.

  -  Test fixes
        Reduced the precision of 1 test to avoid a rounding difference when
        using a perl compiled with uselongdouble. Andreas Koenig

6.04  2009-11-25
  -  Bug fixes
        Fixed a bug where events were not interpreted in the correct time
        zone if SetDate/ForceDate used.

6.03  2009-11-24
  -  Bug fixes
        Corrects a backward incompatibility with UnixDate. Rene Schickbauer

  -  Test fixes
        A couple more corrections to the tests.

6.02  2009-11-24
  -  Bug fixes
        Disabled curr_zone_methods when taint checking on. I believe that
        Date::Manip is completely taint friendly at this point.

  -  Test fixes
        A quick fix to make sure that the tests run correctly in other time

6.01  2009-11-23
  -  Bug fixes
        (*) Fixed a bug where dates were sometimes getting the wrong time
        zone when SetDate/ForceDate in effect.

6.00  2009-11-23
  -  First release of the 6.xx series
        Date::Manip 6.00 is a total rethink of the module, and a nearly
        complete rewrite. Please refer to the Date::Manip::Changes5to6
        document for a list of incompatible changes.

  -  Reorganization
        (*) Massive reorganization and near total rewrite.

        (*) Broke into several smaller modules

  -  New Features
        (*) Full time zone support (using tzdata 2009s)

        Added some functionality (suggested by James Elson to improve
        setting the "current time". Done with the ForceDate config variable.

        (*) Converted languages to YAML for much easier maintenance. Patch
        and suggestion provided by Evan Carroll

        Added much better formats for deltas. Suggested by Jim Hranicky.

        Borrowed the _FindWindowsTZName function from the DateTime-TimeZone

        Added SetDate config variable (based on a suggestion by Christian

        Added parse_format which was first suggested by Kim Ryan.

  -  Other changes
        Several config variables deprecated

        Thanks to Jonathan Hogue for helping test Windows additions.

  -  Bug fixes (correcting problems in the 5.xx releases)
        Fixed a bug where "YYtoYYYY=c" wouldn't work.

        VMS bugfix to not call `date` command. Lane

        New Year's Day defined using a recurrence which might push the
        observed day to the previous year was broken. Reported by Jerry

  -  Language fixes
        Fixed typo in Turkish translation.

        Spelling fix in Dutch. Bart Van Loon

  -  Additional credits
        I have received many suggestions over time which were automatically
        handled during the 6.00 rewrite. Although the changes weren't made
        because of the suggestions specifically, I wanted to acknowledge
        them since I appreciate the suggestions.

        I believe the first person to suggest writing Date::Manip as an OO
        module was Eduard Derksen.

        Delta_Format initialization done outside of the function. Eric Boehm

        Added $subtract to calculation routines. First suggested by Steve

        Added ability to set individual parts of the date
        (Date::Manip::Date::set). First suggested by Martin Thurn.

        UnixDate (i.e. Date::Manip::Date::printf) only calculates formats
        when they are needed. Eduard Derksen

        Parsing will skip some date/time formats if requested. This was
        first suggested by Eduard Derksen.

        It has been suggested several times to support multiple languages,
        multiple config files, or multiple sets of Date_Init options. These
        suggestions (by Meng Fang, Ed Avis, Christian Campbell, and perhaps
        others) were at the back of my mind as I developed the
        Date::Manip::Base class.

        The regular expressions are all i18n friendly in anticipation of
        much better support for localization. First suggested by Alex

        Parsing a date ('today', 'Monday') gives a time of '00:00:00'.
        Suggested by Mark Aitchison.

        Working with fractional days was suggested by Peter van Hardenberg.
        This is implemented in Date::Manip::Base::day_of_year method.