Please check if this works for you. Simple solution to work for each month in reverse direction.
use v5.14;
#!/usr/bin/perl
use strict;
use warnings;
use Time::Piece;
my $t = Time::Piece->new();
my $year = $ARGV[0] || 2014;
foreach my $month ( 1 .. 12 ) {
#Make an object with first day of each month and use it to get las
+t day of each month
my $tFirstDayObject = $t->strptime( "$year/$month/1", "%Y/%m/%d" )
+;
my $monthLastDay = $tFirstDayObject->month_last_day;
#Now make an object with this last date and use it to get last wee
+kDay number
my $tLastDayObject = $t->strptime( "$year/$month/$monthLastDay", "
+%Y/%m/%d" );
my $weekDay = $tLastDayObject->wday;
#Now calculate how many days to add in this weekDay taking Sunday
+as the first day
my $daysToMoveBack = 0;
$weekDay >= 6 ? ( $daysToMoveBack = $weekDay - 6 ) : ( $daysToMove
+Back = $weekDay + 1 );
my $lastFridayDate = $monthLastDay - $daysToMoveBack;
#Now make an object with this $lastFridayDate for each month
my $tLastFridayObject = $t->strptime( "$year/$month/$lastFridayDat
+e", "%Y/%m/%d" );
say $tLastFridayObject->cdate;
}
Output:
Fri Jan 31 00:00:00 2014
Fri Feb 28 00:00:00 2014
Fri Mar 28 00:00:00 2014
Fri Apr 25 00:00:00 2014
Fri May 30 00:00:00 2014
Fri Jun 27 00:00:00 2014
Fri Jul 25 00:00:00 2014
Fri Aug 29 00:00:00 2014
Fri Sep 26 00:00:00 2014
Fri Oct 31 00:00:00 2014
Fri Nov 28 00:00:00 2014
Fri Dec 26 00:00:00 2014
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|