DateTime-Event-Recurrence-0.19 is in CPAN, with documentation patches related to the "week_start_day" parameter:
-- "week_start_day" parameter no longer marked "for internal use". -- Fix "week day" examples. Pointed out by Eric Jensen and Zefram in a thread started by Andrew Martin in datetime@perl.org -- Clarify that week_start_day defaults to "1mo", except for yearly recurrences that default to "mo". Patches by David Steinbrunner. -- Updated contact email. 2017-03-02 5:00 GMT+01:00 Zefram <zef...@fysh.org>: > Andrew Martin wrote: > >however 17-02-2017 is the Third Friday, the expected result is 10-02-2017 > > DateTime::Event::Recurrence->monthly doesn't really do "the Nth Fooday > of each month". It gives you either "the Fooday of the Nth week that > is mostly contained in each month" or "the Fooday of the Nth week that > started in each month". Its idea of a week always starts on a specified > day of the week; the first week that is mostly contained in a month may > start on any day from three days before the 1st of the month up to the > 4th of the month. > > You *can* use this to get the Nth Fooday of each month, by manipulating > how the weeks are delimited. Observe that each week is mostly contained > in the month that contains its fourth day. If you're only interested > in which month contains a specific day of the week, you just have to > arrange for that day to be the fourth of the week. So to get the Nth > Friday of each month, you need to tell it that the week starts on Tuesday: > > my $set = DateTime::Event::Recurrence->monthly(weeks => 2, > days => "fr", week_start_day => "tu"); > > Or you can use weeks starting in the month, and tell it that the day > you're interested in is the first day of the week: > > my $set = DateTime::Event::Recurrence->monthly(weeks => 2, > days => "fr", week_start_day => "1fr"); > > The example in the module's documentation labelled "second tuesday of > every month" is incorrect. It actually yields Tuesdays ranging from the > 9th to the 15th of each month, because it is computing the Tuesdays of > the second week to start in each month, with the week starting on Monday. > > -zefram >