1Date::Manip::Changes6(3U)ser Contributed Perl DocumentatiDoante::Manip::Changes6(3)
2
3
4
6 Date::Manip::Changes6 - changes in Date::Manip 6.xx
7
9 This describes the changes made to the Date::Manip module in the 6.xx
10 series of releases. Major changes are marked with asterisks (*).
11
12 For the most part, Date::Manip has remained backward compatible at
13 every release, but occasionally, a change is made which is backward
14 incompatible. These are marked with an exclamation mark (!).
15
16 #=head1 VERSION 7.00 (expected 2024-12-01) # Remove DM5 #=head1
17 VERSION 6.99 (expected ) #=head1 VERSION 6.98 (expected 2024-12-01)
18 #=head1 VERSION 6.97 (expected 2024-09-01) #=head1 VERSION 6.96
19 (expected 2024-06-01) #=head1 VERSION 6.95 (expected 2024-03-01)
20 #=head1 VERSION 6.94 (expected 2023-12-01) #=head1 VERSION 6.93
21 (expected 2023-09-01) #=head1 VERSION 6.92 (expected 2023-06-01)
22
24 Fixed bug where timezone alias wasn't handled
25 On linux systems configured to be in a timezone that is an alias,
26 the system timezone wasn't recognized, and it defaulted to GMT.
27 This is now fixed. Patch supplied by Sandi Wallendahl (GitHub
28 #43)
29
31 Time zone fixes
32 Aliases in the tzdata database were not being added to the
33 timezone data. Reported in GitHub issue #40.
34
35 The UTC timezone is now named Etc/UTC instead of UTC to be in line
36 with the aliases.
37
38 Newest zoneinfo data (tzdata 2022g).
39
40 Language fixes
41 Additions to the Polish translation. GitHub issue #41.
42
43 Additions to several languages. GitHub issue #42.
44
45 Added some support for per-language parsing rules to respond to
46 GitHub issue #42.
47
48 Documentation fixes
49 The version numbers in the change log was messed up due to a
50 skipped release (no new timezone fixes that time). Fixed.
51
53 (!) Date::Manip 5.xx interface to be removed
54 The old version of Date::Manip (version 5.xx) has been distributed
55 as part of the package in order to support versions of perl older
56 than 5.10 . I see no valid reason to continue to support that, so
57 as of version 7.00, Date::Manip will only include the newer
58 interfaces (which require perl 5.10 or newer). There are no plans
59 to deprecate the functional interface.
60
61 Time zone fixes
62 Newest zoneinfo data (tzdata 2022c).
63
65 Packaging problem.
66 I generated a broken MANIFEST file in the previous release.
67 Reported in GitHub issue #39.
68
70 Bug fixes
71 The package was being generated with an incorrect MANIFEST file.
72 This is now fixed. RT 140075
73
74 Time zone fixes
75 There were no new timezone fixes on 2022-03-01, so no release made
76 then.
77
78 Newest zoneinfo data (tzdata 2022a).
79
81 Change warn to carp
82 All warnings are now issued with the carp command rather than
83 warn. Requested in GitHub pull request #18, but that request was
84 not used because it only changed the uses in the Date::Manip::Date
85 module.
86
87 Bug fixes
88 Fixed a bug where the next/prev Date::Manip::Recur methods gave
89 incorrect results when there are no dates that match the criteria.
90 (GitHub #36)
91
92 Time zone fixes
93 There were no new timezone fixes on 2021-06-01 or 2021-09-01, so
94 no releases made then.
95
96 Newest zoneinfo data (tzdata 2021e). (GitHub #37)
97
99 Test fixes
100 Missed some tests that were failing.
101
103 Time zone fixes
104 Newest zoneinfo data (tzdata 2021a).
105
106 Language fixes
107 Corrections and additions to Italian. Patch supplied by Leo
108 Cacciari (GitHub #33)
109
111 Time zone fixes
112 No new zoneinfo data so no release on 2020-09-01.
113
114 Newest zoneinfo data (tzdata 2020d). Requested by Shawn Carroll
115 (GitHub #32)
116
118 Time zone fixes
119 Newest zoneinfo data (tzdata 2020a).
120
122 Messed up the 6.80 package. This release fixes it.
123
125 Missed Changes entry for previous version.
126 Reported by Tina Muller (GitHub #31)
127
129 Time zone fixes
130 Newest zoneinfo data (tzdata 2019c).
131
133 Time zone fixes
134 Newest zoneinfo data (tzdata 2019b).
135
136 Documentation fixes
137 Fixed a broken link. Mohammad S Anwar (GitHub #29)
138
140 Time zone fixes
141 Newest zoneinfo data (tzdata 2019a).
142
144 Fixed bug in Date::Manip::Date::list_holidays.
145 It was using 'now' instead of the stored date. Douglas DeStafeno
146
147 Reordered TZ detection methods
148 Moved checking the tzdata files to lower priority to avoid a pretty
149 unusual situation in docker. Sven Nierlein (GitHub #20)
150
151 Time zone fixes
152 Newest zoneinfo data (tzdata 2018i). Requested by Shawn C Carroll
153 (GitHub #28)
154
156 Fixed packaging problems
157 Version 6.74 was not packaged correctly. Version wasn't set
158 correctly in a few files and there were invalid entries in
159 Makefile.PL. RT 127870.
160
162 Removed travis file from the tarball
163 The tarball had a .travis.yml file in it that wasn't in the
164 MANIFEST file. Since the MANIFEST file is automatically generated
165 by the perl mkmanifest tool, since it didn't see the .travis.yml
166 file, I have excluded it from the tarball. Reported by Mohammad S
167 Anwar on GitHub (#23)
168
169 Time zone fixes
170 Newest zoneinfo data (tzdata 2018e)
171
173 Fixed math on non-64-bit architectures
174 Much of the math in Date::Manip::Base is in a 'use integer'
175 section. This math can overflow in some cases in non-64-bit
176 architectures. Fixed the cases where this would reasonably occur.
177 Reported by Daniel Albers (GitHub #22). Also reported and tested
178 in RT 126052.
179
180 Bug in normalizing estimated business deltas
181 While working on the non-64-bit issue, it uncovered a bug where
182 normalizing estimated business deltas was wrong. It had never been
183 reported, and it was only off by a couple seconds in some rare
184 situations.
185
187 Fixed recurrence bug
188 The fix in the previous version for a rare recurrence problem broke
189 another recurrence form. It is now corrected. Michael Schout
190 (GitHub #20)
191
192 Fixed version problem
193 The wrong version was included in two files for some reason. This
194 is fixed.
195
196 Documentation fixes
197 Fixed a grammatical error reported by Xavier Guimard (GitHub #19).
198
200 Fixed an extremely rare problem with recurrences
201 It is possible to specify a recurrence that never produces a valid
202 date. In these cases, looking for dates went into an infinite
203 loop. The MaxRecurAttempts config variable was added which will
204 stop that from happening. If no occurrence was found, an error
205 condition will be set. Dean Hamstead (RT 123708)
206
207 Changes file supported
208 It was requested that I include a valid Changes file. I wrote a
209 simple script to convert the Change6.pod file into a valid Change
210 file. The Changes6.pod file is still the canonical source of this
211 information! Requested by H. Merijn Brand
212
213 Fix for timezone determination
214 On MacOS X High Sierra, some of the timezone files were symlinks,
215 but not properly followed. This was fixed by Stu Tomlinson (GitHub
216 #15).
217
218 Time zone fixes
219 Newest zoneinfo data (tzdata 2018e)
220
221 Documentation fixes
222 Minor fix provided by Mohammad S Anwar (GitHub #17)
223
225 (*) (!) Changes to deltas
226 Improved handling of deltas to better support the different types
227 of deltas. Formalized how the semi-exact portions of the delta are
228 used to produce the results that most people would expect.
229
230 The type can now be specified to guarantee several behaviors.
231 Changed the arguments (in a backward compatible way) to several
232 methods. Explicitly added a new type (estimated) which was there
233 previously, but could not be manually specified.
234
235 The convert function continues to support converting from a less
236 exact type to a more exact type, but this is deprecated and will be
237 removed in version 7.00.
238
239 This was prompted by a bug reported by Ian Gibbs.
240
241 (*) (!) Deprecated some parts of Date::Manip::Delta
242 The options passed to the set and parse methods have changed. The
243 old style will be removed in version 7.00.
244
245 Deltas will also no longer support the 'exact' and 'approximate'
246 strings (which have not been supported for some time). These will
247 be removed in 7.00 as well.
248
249 Deprecation of TZ postponed
250 The deprecation of the TZ variable has been postponed to version
251 7.00.
252
253 Some speed improvements
254 I converted some of the functions to use faster algorithms.
255 Previously, the steps were worked out using logical time/calendar
256 based calculations. These were replaced with non-intuitive
257 numerical calculations that gave the same result faster.
258
259 Changed behavior if timezone not determined
260 If the system timezone cannot be determined using any of the
261 methods supplied by Date::Manip, operations will be done in the GMT
262 timezone. Previously, Date::Manip would simply fail to load.
263 Based on a report by Kent Fredric (RT 123229).
264
265 Fixed Makefile.PL
266 The list of what what is provided did not include the path to the
267 file providing each module. I've fixed the Makefile.PL as well as
268 the META files. Graham Knop (GitHub #13)
269
270 Time zone fixes
271 Newest zoneinfo data (tzdata 2018c)
272
273 Documentation fixes
274 Rewrote Date::Manip::Delta page to reflect changes, and clean up
275 the documentation in general.
276
278 Bug fixes
279 Fixed a bug where if a recurrence had no interval, start and end
280 dates passed in to the dates method would not work. PJ-DSI-DevOps
281 (GitHub #12).
282
283 Documentation fixes
284 Clarified Date::Manip::TZ::all_periods. Based on discussion with
285 Peter Pfannenschmid.
286
288 Time zone fixes
289 Newest zoneinfo data (tzdata 2017b)
290
291 Documentation fixes
292 Improved some of the documentation.
293
295 Better support for $mode in DateCalc.
296 DateCalc (in DM6) did not support all values for $mode. Now it
297 does.
298
299 Bug fixes
300 Parsing a date like 01/02/2016 and calling printf with %e gave '02'
301 instead of ' 2'. Robert Wohlfarth (RT 119787).
302
303 Fixed a problem where the tzdata method of determining the timezone
304 was producing an error which wasn't correct. John (GitHub #8)
305
306 Time zone fixes
307 Newest zoneinfo data (tzdata 2017a)
308
310 Time zone fixes
311 Newest zoneinfo data (tzdata 2016j)
312
313 Test fixes
314 A faulty test was failing in a few places. RT 118705
315
316 Another test was failing due to a perl bug that popped up in
317 5.25.7. Tweaked the test to bypass the bug. Kent Fredric (RT
318 118862)
319
321 Test fixes
322 A faulty test was failing most places. New release to correct that
323 problem. Slaven Rezic (RT 117404)
324
326 Fixed bug where $::TZ wasn't used
327 The $::TZ variable was not getting interpreted correctly when
328 searching for a timezone. Steven Hartland (RT 114949)
329
330 Fixed bug where recurrences were not parsed correctly
331 Passing in incorrect values for a field was not trapped in all
332 cases and it led to problems. All values passed in to a recurrence
333 are now correctly checked. Albert Hilazo (GitHub #7).
334
335 Fixed a bug in some methods of creating new objects
336 Some methods of creating new objects based on existing objects did
337 not correctly use the existing object. Bug has never been
338 reported, but was discovered when adding tests to get 100%
339 coverage.
340
341 Time zone fixes
342 Newest zoneinfo data (tzdata 2016f)
343
344 Test fixes
345 Added a number of new tests based on Devel::Cover.
346
348 Deprecation of Date::Manip 5.xx tests
349 By default, the Date::Manip 5.xx tests will no longer run. Changes
350 to the timezone data can cause failures. Since Date::Manip 5.xx is
351 no longer supported in any way, these tests will no longer run on a
352 system where 6.xx can be run. Richard Jelinek.
353
354 Deprecation of TZ postponed
355 The deprecation of the TZ variable has been postponed to March
356 2017. I decided that 1 year was not enough notice (especially
357 since not everyone will have updated Date::Manip since March 2015
358 when the warning was added.
359
360 Bug fixes
361 Changed requirement for ExtUtils::MakeMaker to 6.67_01. Quin
362 Arnold (RT 112286)
363
364 Fixed a bug where a timezone abbreviation was not parsed correctly
365 when passed in as a value to the SetDate, ForceDate, or TZ config
366 variables. Based on a report in perlmonks.org.
367
368 Time zone fixes
369 Newest zoneinfo data (tzdata 2016d)
370
371 Made some improvements to how I handled the timezone data which
372 resulted in a few of the default timezones being changed.
373
374 Documentation fixes
375 Fixed one more typo. Gregor Herrmann (RT 114095)
376
377 Clarified the Config document. Based on a report in perlmonks.org.
378
380 Bug fixes
381 Date::Manip::Delta::cmp had a bug in it's comparison. Ian Gibbs.
382
383 The secs_since_1970_GMT method was missing a test to see if it was
384 a valid object. Michael Stevens (RT 111915)
385
386 Time zone fixes
387 Newest zoneinfo data (tzdata 2016a)
388
389 Documentation fixes
390 Lots of typos fixed. I was using podspell to do spell checking,
391 but it was discarding too much real text (which wasn't getting
392 checked as a result). Switched to pod2text which does a better
393 job. Gregor Herrmann (RT 110025)
394
396 Added date ranges on unmodified dates in Recur
397 The date range can now be specified for either the fully modified
398 dates, or the unmodified dates. This will make it easier to work
399 with holidays in some instances. Based on
400 <http://perlmonks.org/?node_id=1148735>.
401
402 Added IWn and NWn recurrence modifiers
403 Based on <http://perlmonks.org/?node_id=1148735>.
404
405 (!) Reworked holidays slightly
406 Previously, every line in the Holidays section defined a unique
407 holiday. Now, the names determine the list of holidays.
408
409 It is not allowed to have two separate holidays named exactly the
410 same. It IS allowed to have complex holidays that require two (or
411 more) lines in the Holidays section to define them completely.
412
413 Based on <http://perlmonks.org/?node_id=1148735>.
414
415 Bug fixes
416 Fixed a bug where the RecurRange config variable wasn't getting
417 used.
418
419 Fixed a bug where some deltas were not parsed correctly as dates.
420 Salvatore Bonaccorso (RT 109600)
421
422 Time zone fixes
423 Newest zoneinfo data (tzdata 2015g)
424
425 Test fixes
426 Added a number of new tests based on Devel::Cover.
427
429 Changes suggested by perlcritic
430 Played with perlcritic and made a few minor changes based on it's
431 suggestions. I doubt I will use perlcritic significantly.
432
433 (!) Date::Manip::Delta::value now returns an empty string
434 If a delta has an error, or no valid delta in it, the value method
435 returns an empty string instead of undef. This is to be consistent
436 with the Date::Manip::Date::value method which returns an empty
437 string.
438
439 Bug fixes
440 Fixed a bug where date/delta calculations with deltas that are too
441 large was not working correctly. They now set an error condition
442 and fail. Jared Selengut (RT 105737)
443
444 Fixed a bug introduced by the previous patch and luckily discovered
445 pre-release by Tom Wyant.
446
447 Fixed code that produced a warning in 5.22.0. Tom Wyant
448
449 Improved DM6 ParseDate and ParseDateString
450 Added @opts argument. Based on report by Vitaly Shupak (RT
451 105622).
452
453 Time zone fixes
454 Newest zoneinfo data (tzdata 2015f)
455
456 Now uses /etc/localtime as a method to determine the local
457 timezone. Patch supplied by Tom Wyant (RT 105159) (modified by
458 me). The patch uses some code derived from DateTime::TimeZone .
459
460 Clearer message when the date is not valid in the timezone.
461
462 Test fixes
463 Added a number of new tests based on Devel::Cover. Over the next
464 several releases, I intend to continue to add tests until coverage
465 is 100%.
466
467 Documentation fixes
468 Fixed a typo. Gregor Herrmann (RT 105546)
469
471 Bug fixes
472 Not really a bug, but 6.49 got a bunch of NYTprof data bundled with
473 it by mistake. It's been removed. Olivier Mengue (RT 103252)
474
475 Fixed a bug where information about whether a date was complete or
476 truncated was discarded. Jim Avera
477
478 Fixed a bug where SetDate with a zone alias failed.
479
480 Added the Format_MMMYYYY config variable to allow the truncated
481 format mmmYYYY to be parsed instead of mmmDDYY. David W.
482 Morganwalp and Glenn Golden (RT 103142)
483
484 Fixed Makefile.PL/Build.PL to correct for a change on perl on
485 windows which changes a module prereq requirement. Alexandr
486 Ciornii
487
488 Time zone fixes
489 Newest zoneinfo data (tzdata 2015d)
490
491 Added aliases for older HP-UX time zones. H. Merijn Brand (RT
492 104141)
493
494 Documentation fixes
495 Fixed URL for tzdata. Mohammad S Anwar (GitHub #3).
496
497 Better POD formats.
498
499 Fixed a documentation error. Glenn Golden (RT 103966)
500
502 Added a deprecation warning
503 The TZ config variable is going away. Added a deprecation warning.
504
505 Some speedups for timezone handling
506 Based on a report by Glenn Golden (RT 102284), I have done some
507 optimization of the timezone handling code.
508
509 Bug fixes
510 Added the missing is_date base method to Date::Manip::Base. Mario
511 Domgoergen.
512
513 Time zone fixes
514 Newest zoneinfo data (tzdata 2015a)
515
516 Language fixes
517 A number of corrections by Nicholas Riley
518
520 Put repository on GitHub
521 Suggested by Gabor Szabo
522
523 parse_time now parses ISO 8601 times
524 The parse_time routine wouldn't correctly parse ISO 8601 times.
525 This is now fixed.
526
527 Parsing special dates with timezones now works
528 Parsing special date formats with timezones is now supported such
529 as:
530
531 Christmas at noon PST
532 in 3 days at noon PST
533 now PST
534 epoch 3000000 PST
535
536 dm_zdump modified
537 To match the newest version of zdump, the gmtoff is now added at
538 the end of each line.
539
540 Bug fixes
541 Fixed a bug in the printf method that would not handle embedded
542 newlines correctly (and resulted in an infinite loop if it were
543 preceded by a '%'). Henrique Martins
544
545 Fixed a bug where '24:00' was not parsed correctly (though
546 '24:00:00' was).
547
548 Fixed a bug where fractional values separated by a comma weren't
549 parsed correctly.
550
551 Time zone fixes
552 Newest zoneinfo data (tzdata 2014j)
553
555 Time zone fixes
556 Newest zoneinfo data (tzdata 2014f)
557
558 Language fixes
559 Fixed some encoding errors in the language pod documentation.
560
562 Broken distribution
563 The distribution contained an temporary edit file that caused
564 problems. Alexandr Ciornii (RT 96459)
565
566 Time zone fixes
567 Newest zoneinfo data (tzdata 2014e)
568
569 Language fixes
570 Added some plural abbreviations that were missing. Glenn Golden
571 (RT 96944)
572
574 Fixed a test
575 One test was failing (reported by Constantine Peresypkin (RT 96249)
576 as well as several CPAN Tester reports).
577
579 (*) Improvements to UTF8 handling
580 A number of changes based on a report and other discussion with
581 Yuri Nikulin (RT 93545) including:
582
583 Case insensitive matching of UTF8 strings should work all the time.
584
585 Fixed two significant bugs in regexps for parsing dates.
586
587 Improvements to UTF8 handling.
588
589 Corrected some problems with Russian and added the cp1251 encoding.
590
591 One correction to Romanian.
592
593 Added several new test scripts.
594
595 Preliminary patches were supplied by Yuri.
596
597 New features
598 Modified the parse_format function to return %+ if desired. Mike
599 Cappella
600
601 Time zone fixes
602 Newest zoneinfo data (tzdata 2014c)
603
604 Documentation fixes
605 Clarified some DM6 functions. David Close.
606
607 Fixed a typo. Mike Cappella (RT 95619)
608
610 Several changes to distribution files
611 I made several changes to Build.PL, Makefile.PL, META.yml in order
612 to improve the quality (or kwalitee) of the module. None of these
613 should impact anyone using the module.
614
615 Time zone fixes
616 Newest zoneinfo data (tzdata 2013i)
617
618 Documentation fixes
619 Cleaned up some of the Recur documentation. Suggested by Warren
620 Young (RT 92794)
621
623 Added ParseDateFormat function
624 Added the ParseDateFormat function to the DM6 functional interface
625 in response to Eli Lindsey (RT 89286).
626
627 Added Common Log format
628 Added the date format used in apache logs: 11/Oct/2000:13:55:36
629 -0700 Eli Lindsey (RT 89286).
630
631 Time zone fixes
632 Newest zoneinfo data (tzdata 2013h)
633
634 Bug fixes
635 Fixed a bug where dates of the form of a delta with a timezone
636 attached (i.e. "1 day ago at midnight UTC") failed. Ludovic Lange
637 (RT 89256)
638
639 Fixed a bug where events handling gave a warning if there were no
640 events that applied. RT 90344
641
643 Bug fixes
644 Removed a .swp file accidentally left in the package. RT 85845
645
646 Fixed a bug in parse_format where times between 00:00:00 and
647 01:00:00 weren't parsed correctly. Ole Nomann Thomsen
648
649 Fixed generated META.* files to not require Module::Build 0.39.
650 Carsten Wolff (RT 86137)
651
652 Fixed a bug where parse_format did not work with a '%s' format.
653 Mark Keisler (RT 87498)
654
655 Fixed a bug where find_encoding wasn't imported from the Encode
656 module. Krishna Subramanian (RT 87665)
657
658 Fixed a bug where recurrences with no interval did not work if a
659 start and end date were specified, and no dates fell in that range.
660 Jan Pradac
661
662 Time zone fixes
663 Newest zoneinfo data (tzdata 2013d)
664
666 Removed PODs
667 POD documentation is no longer generated for Date::Manip::TZ::* and
668 Date::Manip::Offset::* modules.
669
670 Time zone fixes
671 Newest zoneinfo data (tzdata 2013c)
672
674 Added the $mode argument to ParseDateDelta
675 The ParseDateDelta function (in functional interface) did not allow
676 you to force a parsed delta to semi or approx where appropriate.
677 This was added. Based on RT 82991.
678
679 Added get_config method
680 The get_config method was added to all classes. Suggested by
681 Philippe Poilbarbe.
682
683 Language fixes
684 Fixed a German language problem. Gosta Oelstrom
685
686 Documentation fixes
687 Documented workaround for dmake problem in strawberry perl.
688 Discussed on perlmonks and Martin Thurn (RT 79837).
689
690 Clarified the Examples page. Winston Heng
691
693 (*) Tar file format corrected
694 Problems were reported on several OSes by people unable to install
695 Date::Manip (and other modules). It turns out that the version of
696 tar distributed by my linux distro (OpenSuSE) uses the 'posix'
697 format instead of the traditional 'gnu' format by default. This
698 causes problems for some versions of tar. I have had reports from
699 OSX, Windows, and SunOS. Future versions of Date::Manip will be
700 explicitly distributed in the 'gnu' tar archive format.
701
702 Reported by Jay Allen and John Ralls (RT 80594).
703
704 (*) Date::Manip 5.xx end-of-life
705 Date::Manip 5.xx is now officially out of support. I will not be
706 doing any further work on it. The only exception is that I will
707 consider adding user supplied patches on a case-by-case basis.
708
709 If at all possible, please use Date::Manip 6.xx instead.
710
711 (!) Removed some deprecated config variables
712 The following config variables have been removed.
713
714 IntCharSet
715 RecurNumFudgeDays
716
718 Bug fixes
719 Fixed a bug where ISO 8601 format YYYY-WXX-D didn't work if the
720 week ended up in December. Gordon Lugauer.
721
722 Time zone fixes
723 Newest zoneinfo data (tzdata 2012j)
724
725 Documentation fixes
726 Spelling error fixed. RT 80621
727
729 Fix version numbers
730 This was an interim release to fix the version numbers (6.35 was
731 released with all of the version numbers 6.34).
732
734 Fix PATH
735 This version was an interim release to fix the problem with the
736 PATH being replaced.
737
738 Removed dependency on YAML
739 I've reverted the language data files to perl literals instead of
740 YAML. Though not quite as easy to maintain, it solves a few
741 problems. Patch provided by Christopher Madsen.
742
743 Bug fixes
744 Last versions fix for RT 78566 overrode the PATH even when that
745 wasn't appropriate. This is fixed. Report and patch supplied by
746 Tom Wyant (RT 80435).
747
749 This is a bug fix so that the PATH won't break non-unix installs.
750
751 Bug fixes
752 Put the PATH inside the Unix section so it doesn't affect non-unix
753 environments. Geoff Rowell
754
756 Improvements to Date::Manip::Delta
757 Added convert method. This had been planned since 6.30, but based
758 on a discussion with Henrique Martins, I moved it up in priority.
759
760 Cleaned up handling of delta field lengths (they are now only
761 calculated once.
762
763 Added cmp method. Henrique Martins
764
765 Bug fixes
766 The language modules read from the DATA section, but I never
767 closed the filehandle. This is fixed now. Patch by Doru Theodor
768 Petrescu
769
770 Added better loading of DM5/DM6 modules. Evan Carroll (RT 78152)
771
772 Added a secure PATH to TZ.pm for taint reasons. In response to
773 Dan Pritts (RT 78566)
774
775 Time zone fixes
776 Now supports timezones in files with spaces where there should be
777 underscores. This occurs in RHEL desktop. Dan Pritts (RT 78566)
778
779 Newest zoneinfo data (tzdata 2012e)
780
781 Documentation fixes
782 Minor fix. Henrique Martins
783
785 Modified Build.PL
786 Build.PL now has better support for building (or not building) HTML
787 files. Apparently this is slow on Windows. Patch provide by Manoj
788 Kumar (RT 75118)
789
790 Bug fixes
791 Fixed a bug in business day calculations. Frederic Briere (RT
792 76336)
793
794 Fixed a bug where Delta/Recur objects weren't correctly created.
795 Zsban Ambrus
796
797 Fixed a bug where SetDate/ForceDate config variables could not be
798 included in a file. Jerry Wilcox
799
800 Time zone fixes
801 Newest zoneinfo data (tzdata 2012c).
802
803 Documentation fixes
804 Better support for UTF-8 in autogenerated language module pod
805 files.
806
808 Added extended formats to printf method.
809 These include the %<A=NUM>, %<a=NUM>, %<v=NUM>, %<B=NUM>, %<b=NUM>,
810 %<p=NUM>, and %<E=NUM> formats. Chris Jackson
811
812 Can now parse formats where the time and zone are not adjacent
813 A string like 'Jan 21 17:13:27 2010 -0400' can now be parsed.
814 Requested on perlmonks ('Can Date::Manip parse a unix timestamp'
815 thread).
816
817 Added PeriodTimeSep config variable.
818 This allows you to use a period as a time separator. Ed Avis
819
820 Holidays can be used as date strings
821 You can now parse a holiday name in the Date::Manip::Date::parse
822 method. For example, parse('Christmas'). Requested by Abigail.
823
824 Added new recur modifiers
825 Added WDn, IBD, and NBD modifiers.
826
827 Added a new date format
828 You can now parse '2nd day in May' formats. Randy Harmon
829
830 More flexibility in parsing timezones with both offset and abbrev
831 If you include both the offset and abbreviation in the timezone
832 portion of a date, the parenthesis around the abbreviation are now
833 optional, so you can parse both:
834
835 -04:00 (EDT)
836 -04:00 EDT
837
838 Requested by Steven Melendez.
839
840 Deltas now support fractional values.
841 You can now use a delta of 1.5 days. Martin Thurn (RT 42699)
842
843 Multiple holidays supported
844 A date may now have multiple holidays. Keith Minkler
845
846 Bug fixes
847 Fixed a bug where abbreviations were not being examined case
848 insensitively. Jurgen Muck
849
850 The Holidays section may be safely split across multiple config
851 files. A bug prevented this from working before.
852
853 Language fixes
854 The Norwegian translation was broken due to a typo in the language
855 module.
856
857 Included complete documentation for each language.
858
859 Fixed a couple problems with Danish. Nicholas Oxhaj
860
861 Added Finnish (from a VERY old mail that I overlooked somehow).
862 Iikka Virkkunen
863
864 Cleaned up the values used by printf directives to give the
865 expected result.
866
867 Documentation fixes
868 Fixed a typo. Nicholas Bamber
869
871 (*) (!) Reworked deltas
872 Much of the delta code was reworked.
873
874 The constraint that a day is treated as 24 hours was removed (by
875 adding the concept of semi-exact deltas) to better handle daylight
876 saving time calculations.
877
878 Made cosmetic changes to which signs will be included in a delta to
879 make the deltas more readable. Signs which are the same as the
880 next higher field will be omitted, even if they cross set
881 boundaries.
882
883 Added support for non-normalized deltas. See the $no_normalize
884 option for the parse and set methods.
885
886 Removed limitations on subtract=2 not working with business
887 calculations.
888
889 Thanks to discussion on perlmonks, and RT 65774 that prompted me to
890 do this. I'd been wanting to do it for some time, but the
891 discussion on perlmonks made me realize that this needed to be much
892 higher priority.
893
894 (!) Modified Delta_Format
895 In conjunction with the above work, added the 'semi' mode to
896 Delta_Format.
897
898 (!) Removed some deprecated config variables
899 The following config variables have been removed.
900
901 GlobalCnf
902 IgnoreGlobalCnf
903 PersonalCnf
904 PersonalCnfPath
905 PathSep
906
907 Internal
908 DeltaSigns
909 UpdateCurrTZ
910 ConvTZ
911 OldConfigFiles
912 ResetWorkDay
913
914 Time zone fixes
915 Newest zoneinfo data (tzdata 2011n). RT 71595
916
917 Corrects a bug where +0000 and -0000 offsets were not parsed
918 correctly. Aaron Hall
919
920 The zoneinfo data includes rules more than 20 years in the future,
921 so we now store 30 years of future dates instead of 20 to catch
922 these rules.
923
924 When parsing the timezone portion of the date, timezone
925 abbreviations now take higher precedence than zone names (since
926 that is how timezone information is typically specified). That
927 only impacts dates where the a timezone name is the same as an
928 abbreviation, such as 'CET'.
929
930 Previously, a date with CET in it was interpreted as in the CET
931 timezone. Now it is interpreted as in a timezone with the CET
932 abbreviation.
933
934 Better handling of undef in DM6
935 The date/delta parsing routines in DM6 will now handle an undef
936 argument without issuing a warning. Earl C. Ruby III
937
938 Bug fixes
939 Fixed a bug with the parse_format %f and %i formats. Tommi Rintala
940
941 Fixed a bug where the Date::Manip::Delta::set function didn't work
942 to set the month value.
943
944 Fixed a bug where parsing some dates near during a DST change
945 failed.
946
947 Minor bug fix when using Delta_Format. Prompted while
948 investigating RT 41095.
949
951 Relaxed one constraint in ISO 8601 dates
952 A time separated by whitespace from the date can use a single digit
953 hour. Yuming Philip Xiang
954
955 (*) Set official removal dates for old config variables
956 Config variables will be removed 2 years after they are deprecated
957 (except for the TZ variable which, due to it's wide use, will be
958 kept for 4 years).
959
960 Time zone fixes
961 Newest zoneinfo data (tzdata 2011i)
962
964 New features
965 Spaces are ignored in the SetDate/ForceDate config values. Zsban
966 Ambrus
967
968 Bug fixes
969 Fixed a bug where 'in one week' wasn't correctly parsed. E. M.
970 Shtern
971
972 Fixed a bug where options passed in to the 'new' as a listref
973 weren't handled properly. Zsban Ambrus
974
975 Time zone fixes
976 Newest zoneinfo data (tzdata 2011g)
977
979 (!) Renamed one Date::Manip::Recur method
980 The Date::Manip::Recur::base method has been renamed to basedate .
981 The Date::Manip::Recur::base method should return the
982 Date::Manip::Base object like all the other Date::Manip modules.
983
984 (*) Reworked holidays defined as recurrences
985 Improved dealing with the bootstrap problem of defining holidays,
986 especially those that contain business day flags. Mike Tonks
987
988 New features
989 The printf function will now take multiple format strings and
990 return a list of values. Zsban Ambrus
991
992 Bug fixes
993 Fixed a bug where GlobalCnf wasn't working. Peter Edwards
994
995 Improved error messages in a few cases.
996
997 Fixed a bug where one invalid date/timezone check was ignored.
998 Morten Bjornsvik
999
1000 Fixed a bug where '$base2 = new Date::Manip::Base $base1' wasn't
1001 working. RT 67143
1002
1003 Fixed a bug where passing dates in to the Recur->dates method
1004 failed. RT 67144
1005
1006 Fixed a bug where the mode wasn't being preserved correctly for a
1007 delta. RT 67150
1008
1009 Fixed a bug in recurrences where a base date outside of a date
1010 range with a very uncommon recurrence format would not work
1011 correctly.
1012
1013 Fixed a problem where the '%s' printf option didn't work in GMT.
1014 Jean-Michel Hiver
1015
1016 Time zone fixes
1017 Newest zoneinfo data (tzdata 2011f)
1018
1019 Documentation fixes
1020 Fixed two bad recurrence examples in the documentation. Peter
1021 Edwards and Mike Tonks
1022
1024 Time zone fixes
1025 Newest zoneinfo data (tzdata 2011b)
1026
1027 Fixed a bug where the gmtoff method of getting the local timezone
1028 was broken. Martin Zinser.
1029
1030 Fixed the 'env' method of determining the local time zone to allow
1031 the value to be an offset of seconds since UTC. This allows the
1032 VMS SYS$TIMEZONE_DIFFERENTIAL variable to work correctly. Martin
1033 Zinser.
1034
1035 Removed the SYS$TIMEZONE_RULE method from VMS since the value
1036 stored there is not the name of a timezone (it's a rule in a non-
1037 standard format). Based on discussion with Martin Zinser.
1038
1039 Improved the order in which aliases, abbreviations, etc., are
1040 tested to test current usage before non-current usage (there were a
1041 few cases where old usages were getting tested before current
1042 usage.
1043
1044 Language fixes
1045 The module will now die if a language module cannot be loaded (most
1046 likely due to a YAML::Syck issue). Based on discussion with Martin
1047 Zinser.
1048
1049 Documentation fixes
1050 Added a sample config file document. Based on discussion with Rich
1051 Duzenbury.
1052
1054 New features
1055 Deltas may now contain spelled out numbers, so 'in 2 weeks' and 'in
1056 two weeks' will both work. Daniel Shahaf
1057
1058 Bug fixes
1059 Fixed a bug where week_of_year didn't work in some cases. Chris
1060 Eveland.
1061
1062 Fixed a minor potential bug. Geraint Edwards.
1063
1064 Time zone fixes
1065 Updated windows time zone aliases. Daniel Harding
1066
1067 Language fixes
1068 Added Norwegian. Glenn Sogn
1069
1071 (*) (!) Reworked recurrences
1072 Recurrences were reworked in a (slightly) backward incompatible way
1073 to improve their usefulness (and to make them conform to the
1074 expected results). Most recurrences will work the same as
1075 previously, but a few will differ. Most of this was suggested by
1076 Jay Jacobs.
1077
1078 A recurring event is now calculated relative to the base date, NOT
1079 relative to a previous event. For example, if a recurrence occurs
1080 every month, and the base date was Jan 31, then previously,
1081 recurring events would have been (in a non-leap year):
1082
1083 D(0) = Jan 31
1084 D(1) = D(0) + 1 month = Feb 28
1085 D(2) = D(1) + 1 month = Mar 28
1086 ...
1087
1088 The new behavior is:
1089
1090 D(0) = Jan 31
1091 D(1) = D(0) + 1*(1 month) = Feb 28
1092 D(2) = D(0) + 2*(1 month) = Mar 31
1093 ...
1094
1095 Previously, if a base date were not specified, it was not
1096 determined from the date range. Now, the start date of the date
1097 range acts as the base date.
1098
1099 The meaning of the base date has changed slightly. It is much more
1100 meaningful and useful now.
1101
1102 Added iterator functions. Daniel LaLiberte
1103
1104 The RecurNumFudgeDays variable is no longer used and is deprecated.
1105
1106 Time zone fixes
1107 Newest zoneinfo data (tzdata 2010o)
1108
1110 (*) Date::Manip 5.xx fully integrated with 6.xx
1111 Date::Manip 5.xx and 6.xx are both installed automatically, and the
1112 correct one will be chosen.
1113
1114 Bug fixes
1115 Fixed a bug where recurrence handling was broken. RT 62128
1116
1117 Documentation fixes
1118 A lot of documentation was cleaned up to be easier to read, and
1119 better organized.
1120
1122 New features
1123 Added the input methods to Date::Manip::Date and
1124 Date::Manip::Delta. Ed Avis.
1125
1126 The 'date +%z' command will also be used to determine the timezone.
1127 Oliver Schulze
1128
1129 Bug fixes
1130 Several changes to try to get rid of a memory leaks reported in RT
1131 54937. Huge thanks to BrowserUK on perlmonks for help.
1132 Unfortunately, it ended up being a bug in perl, and will only be
1133 resolved when that bug is fixed. See the Date::Manip::Problems
1134 document for more information.
1135
1136 Reorganized Base/TZ to get rid of circular references.
1137 Added end blocks to clean some global variables.
1138 Got rid of switch/given structures.
1139
1140 Fixed a bug where an incomplete date with 'last' in it was causing
1141 an error. RT 60138
1142
1143 Fixed a bug where 'Sunday, 9th Jan 1972' wasn't parsed correctly.
1144 RT 57832
1145
1146 Time zone fixes
1147 Fixed a bug where Zones.pm was generated with the abbreviations in
1148 the wrong order. Amish Chana.
1149
1150 Language fixes
1151 French month abbreviations now support periods. Bernard Haerri
1152
1153 Test fixes
1154 Added tests from RT 29655 to make sure that the problem never
1155 recurs.
1156
1157 Documentation fixes
1158 Fixed documentation problem with the new_* methods in
1159 Date::Manip::Obj. Options must be passed in as \@opts rather than
1160 @opts.
1161
1162 Cleaned up some of the documentation.
1163
1165 (!) IntCharSet config variable deprecated
1166 With better support for international character sets, the old
1167 IntCharSet config variable (which was a bandaid at best) is
1168 deprecated. Currently, the functionality still exists, but it will
1169 be removed at some point.
1170
1171 New features
1172 Added the Encoding config variable.
1173
1174 Now supports parsing the EXIF date format. Rhesa Rozendaal
1175
1176 Bug fixes
1177 Fixed Build.PL to not require perl 5.010 since the distribution as
1178 a whole does not require that (and I want that fact to be in
1179 META.yml).
1180
1181 Fixed a bug where the Date::Manip::Date::set method was broken when
1182 setting individual fields. Helmut A. Bender
1183
1184 Fixed a bug where set didn't work in Date::Manip::Delta. Patch
1185 provided in RT 59096.
1186
1187 Time zone fixes
1188 Newest zoneinfo data (tzdata 2010m)
1189
1190 Language fixes
1191 (*) Converted all language files to UTF-8 and added rudimentary
1192 support for character encodings. Some assistance by Stephen
1193 Ostermiller.
1194
1195 Fixed problem in Polish, Dutch. Stephen Ostermiller
1196
1197 Extended support for 'nth' up to 53rd. Paco Regodon
1198
1199 Added some corrections to German. Dieter Lange
1200
1201 Documentation fixes
1202 Clarified Date::Manip::Recur documentation based on RT 59132.
1203
1205 Bug fixes
1206 Fixed a problem in Build.PL that had an incorrect module
1207 requirement.
1208
1210 (*) Combined 5.xx and 6.xx releases into one distribution
1211 Because the automatic module management tools cpan/cpanp would try
1212 to upgrade Date::Manip to the most recent version, and the most
1213 recent version will only work if perl 5.10.0 or higher is
1214 installed, both the 5.xx and 6.xx releases are now combined into a
1215 single distribution.
1216
1217 This is described more fully in the Date::Manip::Problems document.
1218
1219 (!) Zones specified by offset
1220 In all operations involving time zones, the time zone must be
1221 determined. By default, it would take all of the information
1222 available (date, ISDST, etc.) and determine the most likely time
1223 zone. It would take every time zone that matched each piece of
1224 information, starting with those that matched in a standard time
1225 followed by those that matched in a daylight saving time.
1226
1227 When zones are specified by an offset, a standard time would always
1228 match since there are standard time zones that match all year long
1229 (the military time zones A-Z and the standard time zones of the
1230 form Etc/GMT+01). As a result, a daylight saving time match would
1231 never occur.
1232
1233 Since (if the date falls during a daylight saving time period) you
1234 usually want to use a time zone that has that offset in daylight
1235 saving time, the default is now to check daylight saving time zones
1236 first, followed by standard times.
1237
1238 See the Date::Manip::TZ manual (under the zone method) for more
1239 information.
1240
1241 Bug fixes
1242 Fixed a bug where Date_ConvTZ not working correctly with time zones
1243 specified by offset. Chris Butler
1244
1245 Fixed a bug where business mode calculations involving minutes was
1246 not handled correctly. Damien Moore
1247
1248 Fixed a bug where business mode calculations failed in some cases.
1249 RT 56638
1250
1251 Time zone fixes
1252 Newest zoneinfo data (tzdata 2010i)
1253
1254 Changed Date::Manip::TZ::zone so "dst" is sometimes the default
1255 $dstflag. Based on the bug report by Chris Butler.
1256
1257 OpenUNIX puts a colon at the start of some time zones. It's
1258 removed. Jean Hassler
1259
1260 Test fixes
1261 Converted tests to Test::Inter
1262
1263 Documentation fixes
1264 Fixed a documentation bug in Date::Manip::TZ where "stdonly" was
1265 listed as the default value for $dstflag, but in actuality, "std"
1266 is the default.
1267
1269 Bug fixes
1270 Fixed bug in Date_TimeZone where it wasn't returning the time zone.
1271 Robert Eden
1272
1274 Bug fixes
1275 Minor bug where %Z printf format didn't always work.
1276
1277 Added support for 5pm back in (it was omitted accidentally). Mark
1278 Kennedy
1279
1280 Fixed a minor warning. Morten Bjoernsvik
1281
1282 Some additional speedups.
1283
1284 Time zone fixes
1285 Newest zoneinfo data (tzdata 2010b)
1286
1287 Added dm_zdump example script.
1288
1289 Improved TZ::periods functionality
1290
1291 Fixed bug in Date_ConvTZ where empty values weren't defaulting to
1292 local time zone. Robert Eden
1293
1294 Fixed a couple of problems in the generated time zones for some odd
1295 cases (America/Resolute and Asia/Tehran).
1296
1298 (!) %z format
1299 In Date::Manip 5.xx, the %z format in UnixDate printed the offset
1300 in the form -0500. In 6.00, I changed that to -05:00:00, but this
1301 broke RFC 822 compliance.
1302
1303 I've changed %z back to -0500, and introduced a new format (%N)
1304 which returns -05:00:00.
1305
1306 Incidentally, this is the LAST unused letter, so I am now going to
1307 have to either stop adding formats, or add some extended format
1308 syntax. Not sure yet which, but this may involve a backwards
1309 incompatible change in the future.
1310
1311 (*) Significant speedups.
1312 Thanks to Moritz Lenz and BrowserUK on perlmonks for suggestions
1313 (and a number of other people on perlmonks for suggestions that I
1314 did not end up using, but which provided a great discussion).
1315
1316 Bug fixes
1317 Fixed a bug in parse_date where the current time was getting used
1318 instead of the documented 00:00:00
1319
1320 Bug fix where DateCalc didn't work with $mode in some cases.
1321
1322 Fixed Makefile.PL/Build.PL to handle Win32::TieRegistry
1323 requirement.
1324
1325 Changed %z printf behavior back to 5.xx and added %N format. Gilles
1326 Lamiral
1327
1328 Added dm_date example script.
1329
1330 Time zone fixes
1331 Fixed bug where non-English Windows versions didn't get the time
1332 zone. Thanks to Rene Schickbauer for testing.
1333
1334 Test fixes
1335 Reduced the precision of 1 test to avoid a rounding difference when
1336 using a perl compiled with uselongdouble. Andreas Koenig
1337
1339 Bug fixes
1340 Fixed a bug where events were not interpreted in the correct time
1341 zone if SetDate/ForceDate used.
1342
1344 Bug fixes
1345 Corrects a backward incompatibility with UnixDate. Rene Schickbauer
1346
1347 Test fixes
1348 A couple more corrections to the tests.
1349
1351 Bug fixes
1352 Disabled curr_zone_methods when taint checking on. I believe that
1353 Date::Manip is completely taint friendly at this point.
1354
1355 Test fixes
1356 A quick fix to make sure that the tests run correctly in other time
1357 zones.
1358
1360 Bug fixes
1361 (*) Fixed a bug where dates were sometimes getting the wrong time
1362 zone when SetDate/ForceDate in effect.
1363
1365 First release of the 6.xx series
1366 Date::Manip 6.00 is a total rethink of the module, and a nearly
1367 complete rewrite. Please refer to the Date::Manip::Changes5to6
1368 document for a list of incompatible changes.
1369
1370 Reorganization
1371 (*) Massive reorganization and near total rewrite.
1372
1373 (*) Broke into several smaller modules
1374
1375 New Features
1376 (*) Full time zone support (using tzdata 2009s)
1377
1378 Added some functionality (suggested by James Elson to improve
1379 setting the "current time". Done with the ForceDate config
1380 variable.
1381
1382 (*) Converted languages to YAML for much easier maintenance. Patch
1383 and suggestion provided by Evan Carroll
1384
1385 Added much better formats for deltas. Suggested by Jim Hranicky.
1386
1387 Borrowed the _FindWindowsTZName function from the DateTime-TimeZone
1388 module.
1389
1390 Added SetDate config variable (based on a suggestion by Christian
1391 Campbell).
1392
1393 Added parse_format which was first suggested by Kim Ryan.
1394
1395 Other changes
1396 Several config variables deprecated
1397
1398 Thanks to Jonathan Hogue for helping test Windows additions.
1399
1400 Bug fixes (correcting problems in the 5.xx releases)
1401 Fixed a bug where "YYtoYYYY=c" wouldn't work.
1402
1403 VMS bugfix to not call `date` command. Lane
1404
1405 New Year's Day defined using a recurrence which might push the
1406 observed day to the previous year was broken. Reported by Jerry
1407 Wilcox.
1408
1409 Language fixes
1410 Fixed typo in Turkish translation.
1411
1412 Spelling fix in Dutch. Bart Van Loon
1413
1414 Additional credits
1415 I have received many suggestions over time which were automatically
1416 handled during the 6.00 rewrite. Although the changes weren't made
1417 because of the suggestions specifically, I wanted to acknowledge
1418 them since I appreciate the suggestions.
1419
1420 I believe the first person to suggest writing Date::Manip as an OO
1421 module was Eduard Derksen.
1422
1423 Delta_Format initialization done outside of the function. Eric
1424 Boehm
1425
1426 Added $subtract to calculation routines. First suggested by Steve
1427 Berlage.
1428
1429 Added ability to set individual parts of the date
1430 (Date::Manip::Date::set). First suggested by Martin Thurn.
1431
1432 UnixDate (i.e. Date::Manip::Date::printf) only calculates formats
1433 when they are needed. Eduard Derksen
1434
1435 Parsing will skip some date/time formats if requested. This was
1436 first suggested by Eduard Derksen.
1437
1438 It has been suggested several times to support multiple languages,
1439 multiple config files, or multiple sets of Date_Init options. These
1440 suggestions (by Meng Fang, Ed Avis, Christian Campbell, and perhaps
1441 others) were at the back of my mind as I developed the
1442 Date::Manip::Base class.
1443
1444 The regular expressions are all i18n friendly in anticipation of
1445 much better support for localization. First suggested by Alex
1446 Kapranoff.
1447
1448 Parsing a date ('today', 'Monday') gives a time of '00:00:00'.
1449 Suggested by Mark Aitchison.
1450
1451 Working with fractional days was suggested by Peter van Hardenberg.
1452 This is implemented in Date::Manip::Base::day_of_year method.
1453
1455 Please refer to the Date::Manip::Problems documentation for information
1456 on submitting bug reports or questions to the author.
1457
1459 Date::Manip - main module documentation
1460
1462 This script is free software; you can redistribute it and/or modify it
1463 under the same terms as Perl itself.
1464
1466 Sullivan Beck (sbeck@cpan.org)
1467
1468
1469
1470perl v5.36.0 2023-03-08 Date::Manip::Changes6(3)