NAME¶
Date::Manip::Changes6 - changes in Date::Manip 6.xx
SYNOPSIS¶
This describes the changes made to the Date::Manip module in the 6.xx series of
releases. Major changes are marked with asterisks (*).
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 (!).
VERSION 6.34 (planned 2012-12-01)¶
VERSION 6.33 (planned 2012-09-01)¶
VERSION 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 in
RT 75118.
- Bug fixes
- Fixed a bug in business day calculations. 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.
VERSION 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'
thread).
- 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. 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 module.
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
result.
- Documentation fixes
- Fixed a typo. Nicholas Bamber
VERSION 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 calculations.
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 priority.
- (!) Modified Delta_Format
- In conjunction with the above work, added the 'semi' mode
to Delta_Format.
- (!) Removed some deprecated config variables
- The following config variables have been removed.
GlobalCnf
IgnoreGlobalCnf
PersonalCnf
PersonalCnfPath
PathSep
Internal
DeltaSigns
UpdateCurrTZ
ConvTZ
OldConfigFiles
ResetWorkDay
- 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 abbreviation.
- 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 failed.
Minor bug fix when using Delta_Format. Prompted while investigating RT
41095.
VERSION 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)
VERSION 6.24 (2011-06-13)¶
- New features
- Spaces are ignored in the SetDate/ForceDate config values.
Zsban Ambrus
- Bug fixes
- Fixed a bug where 'in one week' wasn't correctly parsed. E.
M. Shtern
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)
VERSION 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
VERSION 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 Zinser.
- Documentation fixes
- Added a sample config file document. Based on discussion
with Rich Duzenbury.
VERSION 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 Eveland.
Fixed a minor potential bug. Geraint Edwards.
- Time zone fixes
- Updated windows time zone aliases. Daniel Harding
- Language fixes
- Added Norwegian. Glenn Sogn
VERSION 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 Jacobs.
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)
VERSION 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.
VERSION 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
57832
- Time zone fixes
- Fixed a bug where Zones.pm 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 recurs.
- Documentation fixes
- Fixed documentation problem with the new_* methods in
Date::Manip::Obj. Options must be passed in as \@opts rather than @opts.
Cleaned up some of the documentation.
VERSION 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 META.yml).
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 Ostermiller.
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.
VERSION 6.11 (2010-04-30)¶
- Bug fixes
- Fixed a problem in Build.PL that had an incorrect module
requirement.
VERSION 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 distribution.
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 occur.
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
information.
- 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.
VERSION 6.07 (2010-02-05)¶
- Bug fixes
- Fixed bug in Date_TimeZone where it wasn't returning the
time zone. Robert Eden
VERSION 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 Kennedy
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).
VERSION 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 Lamiral
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
VERSION 6.04 (2009-11-25)¶
- Bug fixes
- Fixed a bug where events were not interpreted in the
correct time zone if SetDate/ForceDate used.
VERSION 6.03 (2009-11-24)¶
- Bug fixes
- Corrects a backward incompatibility with UnixDate. Rene
Schickbauer
- Test fixes
- A couple more corrections to the tests.
VERSION 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 zones.
VERSION 6.01 (2009-11-23)¶
- Bug fixes
- (*) Fixed a bug where dates were sometimes getting the
wrong time zone when SetDate/ForceDate in effect.
VERSION 6.00 (2009-11-23)¶
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 module.
Added SetDate config variable (based on a suggestion by Christian Campbell).
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 Wilcox.
- 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 Berlage.
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 Kapranoff.
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.
BUGS AND QUESTIONS¶
Please refer to the Date::Manip::Problems documentation for information on
submitting bug reports or questions to the author.
SEE ALSO¶
Date::Manip - main module documentation
LICENSE¶
This script is free software; you can redistribute it and/or modify it under the
same terms as Perl itself.
AUTHOR¶
Sullivan Beck (sbeck@cpan.org)