### 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??

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;

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

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 drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2023-05-28 02:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?

No recent polls found

Notices?