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