Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: What is the best way to get a list of all Mondays until the end of the year?

by grinder (Bishop)
on Aug 19, 2008 at 11:34 UTC ( #705178=note: print w/replies, xml ) Need Help??


in reply to What is the best way to get a list of all Mondays until the end of the year?

What is the best way...

Perhaps something using Date::Calc. The idea would be to take a date in the year, find the next monday, and if the year is the same, print it out. Then, keep adding 7 days until the year changes.

#! /usr/bin/perl use strict; use warnings; use Date::Calc 'Add_Delta_Days'; my ($day, $month, $year, $dow) = (localtime)[3, 4, 5, 6]; $year += 1900; $month += 1; my $this_year = $year; ($year, $month, $day) = Add_Delta_Days($year, $month, $day, (8 - $dow) + % 7); while ($this_year == $year) { printf "%04d-%02d-%02d\n", $year, $month, $day; ($year, $month, $day) = Add_Delta_Days($year, $month, $day, 7); }

update: it occurs to me that it may not be obvious how this calculates Mondays, since it uses a magic number. It would be a little clearer had I written:

my %day = qw( Sun 0 Mon 1 Tue 2 Wed 3 Thu 4 Fri 5 Sat 6 ); ($year, $month, $day) = Add_Delta_Days($year, $month, $day, (7 + $day{ +Mon} - $dow) % 7);

• another intruder with the mooring in the heart of the Perl

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://705178]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (2)
As of 2022-05-25 04:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (84 votes). Check out past polls.

    Notices?