Date::Manip::Changes6 - changes in Date::Manip 6.xx |
Date::Manip::Changes6 - changes in Date::Manip 6.xx
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 (!).
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.
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.
Fixed a problem where the tzdata method of determining the timezone was producing an error which wasn't correct. John (GitHub #8)
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)
$::TZ
wasn't used$::TZ
variable was not getting interpreted correctly when searching
for a timezone. Steven Hartland (RT 114949)
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 perlmonks.org.
Made some improvements to how I handled the timezone data which resulted in a few of the default timezones being changed.
Clarified the Config document. Based on a report in perlmonks.org.
The secs_since_1970_GMT method was missing a test to see if it was a valid object. Michael Stevens (RT 111915)
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 http://perlmonks.org/.
Fixed a bug where some deltas were not parsed correctly as dates. Salvatore Bonaccorso (RT 109600)
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
@opts
argument. Based on report by Vitaly Shupak (RT 105622).
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.
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
Added aliases for older HP-UX time zones. H. Merijn Brand (RT 104141)
Better POD formats.
Fixed a documentation error. Glenn Golden (RT 103966)
Christmas at noon PST in 3 days at noon PST now PST epoch 3000000 PST
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.
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.
Fixed a typo. Mike Cappella (RT 95619)
Fixed a bug where events handling gave a warning if there were no events that applied. RT 90344
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
Clarified the Examples page. Winston Heng
Reported by Jay Allen and John Ralls (RT 80594).
If at all possible, please use Date::Manip 6.xx instead.
IntCharSet RecurNumFudgeDays
This is a bug fix so that the PATH won't break non-unix installs.
Cleaned up handling of delta field lengths (they are now only calculated once.
Added cmp method. Henrique Martins
Added better loading of DM5/DM6 modules. Evan Carroll (RT 78152)
Added a secure PATH to TZ.pm for taint reasons. In response to Dan Pritts (RT 78566)
Newest zoneinfo data (tzdata 2012e)
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
-04:00 (EDT) -04:00 EDT
Requested by Steven Melendez.
The Holidays section may be safely split across multiple config files. A bug prevented this from working before.
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.
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.
GlobalCnf IgnoreGlobalCnf PersonalCnf PersonalCnfPath PathSep
Internal DeltaSigns UpdateCurrTZ ConvTZ OldConfigFiles ResetWorkDay
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.
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.
Fixed a bug where options passed in to the 'new' as a listref weren't handled properly. Zsban Ambrus
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
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.
Fixed a minor potential bug. Geraint Edwards.
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.
The 'date +%z' command will also be used to determine the timezone. Oliver Schulze
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
Cleaned up some of the documentation.
Now supports parsing the EXIF date format. Rhesa Rozendaal
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.
Fixed problem in Polish, Dutch. Stephen Ostermiller
Extended support for 'nth' up to 53rd. Paco Regodon
Added some corrections to German. Dieter Lange
This is described more fully in the Date::Manip::Problems document.
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.
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
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
Added support for 5pm back in (it was omitted accidentally). Mark Kennedy
Fixed a minor warning. Morten Bjoernsvik
Some additional speedups.
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).
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.
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.
(*) Broke into several smaller modules
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.
Thanks to Jonathan Hogue for helping test Windows additions.
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.
Spelling fix in Dutch. Bart Van Loon
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.
Please refer to the the Date::Manip::Problems manpage documentation for information on submitting bug reports or questions to the author.
the Date::Manip manpage - main module documentation
This script is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Sullivan Beck (sbeck@cpan.org)
Date::Manip::Changes6 - changes in Date::Manip 6.xx |