2008/4/12, Flavio Poletti via RT <[EMAIL PROTECTED]>: > Sat Apr 12 08:41:24 2008: Request 34912 was acted upon. > Transaction: Ticket created by POLETTIX > Queue: DateTime > Subject: Constants for months/weekdays? > Broken in: 0.42 > Severity: Wishlist > Owner: Nobody > Requestors: [EMAIL PROTECTED] > Status: new > Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=34912 > > > Hi, > > I think it would be useful to have some constants exported by the > module to refer to month names and weekdays, like JANUARY, JANUARY_0 and > so on. Otherwise, it's likely that the users will define such constants > by themselves (or worse hardcode them), leading to potential bugs. > > I noticed this while reading http://use.perl.org/~Aristotle/journal/36022.
# Reference: http://use.perl.org/~Aristotle/journal/36022 { #-------------- # implementation using the "ICal" module use DateTime::Event::ICal; print "with ICal\n"; my $first_thursday = DateTime::Event::ICal->recur( freq => 'monthly', byday => [ '1th' ] ); my $fridays = DateTime::Event::ICal->recur( freq => 'weekly', byday => [ 'fr' ] ); my $first_friday = DateTime::Event::ICal->recur( freq => 'monthly', byday => [ '1fr' ] ); my $last_friday = DateTime::Event::ICal->recur( freq => 'monthly', byday => [ '-1fr' ] ); my $dt = DateTime->today; my $dt_month = DateTime->today->truncate( to => 'month' )->add( months => 1 ); print 'First Friday of this month: ', $first_friday->previous( $dt_month ), "\n"; print 'Last Friday of this month: ', $last_friday->previous( $dt_month ), "\n"; print 'The Friday before today: ', $fridays->previous( $dt ), "\n"; print 'London.pm heretics meeting this month: ', $first_thursday->previous( $dt_month ), "\n"; print "\n"; #-------------- } { #-------------- # implementation using the "Recurrence" module # - requires a little more calculations; more error-prone use DateTime::Event::Recurrence; print "with Recurrence\n"; my $thursdays = DateTime::Event::Recurrence->weekly( days => [ 'th' ] ); my $fridays = DateTime::Event::Recurrence->weekly( days => [ 'fr' ] ); my $dt = DateTime->today; print 'First Friday of this month: ', $fridays->next( $dt->clone->truncate( to => 'month' )->subtract( days => 1 ) ), "\n"; print 'Last Friday of this month: ', $fridays->previous( $dt->clone->truncate( to => 'month' )->add( months => 1 ) ), "\n"; print 'The Friday before today: ', $fridays->previous( $dt ), "\n"; print 'London.pm heretics meeting this month: ', $thursdays->next( $dt->clone->truncate( to => 'month' )->subtract( days => 1 ) ), "\n"; print "\n"; #-------------- } # First Friday of this month: 2008-04-04T00:00:00 # Last Friday of this month: 2008-04-25T00:00:00 # The Friday before today: 2008-04-11T00:00:00 # London.pm heretics meeting this month: 2008-04-03T00:00:00