develooper Front page | perl.datetime | Postings from March 2017

Re: Recurring set does not correctly calculate dates for secondFriday of the month.

Thread Previous | Thread Next
From:
Flavio S. Glock
Date:
March 7, 2017 20:37
Subject:
Re: Recurring set does not correctly calculate dates for secondFriday of the month.
Message ID:
CAHMRfDyme0P_ysox_4=5CbJY3vkS8JTSViOfO4LA9EKz_--vew@mail.gmail.com
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 <zefram@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
>

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About