Chris Charley wrote:
"Andrew Gaffney" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]

R. Joseph Newton wrote:

Andrew Gaffney wrote:


[snip]


I didn't do it this way because there is a "first" pay period. If there

are only 2 pay


periods from the starting date, you can't build a list of 6. My way takes

that into


account. Below is the modified code based on (most of) your suggestions.

use constant PAY_PERIOD_DAYS => 14;
my @pay_periods;
my @final_pay_periods;
my $last_period_end = Date::Simple->new('2004-03-20');



my @lt = localtime;
my $today = Date::Simple->new($lt[5]+1900, $lt[4]+1, $lt[3]);


Here you could just say:

my $today = Date::Simple->new;



while($today > $last_period_end + 1) {
  my $new_start = $last_period_end + 1;
  my $new_end = $last_period_end + PAY_PERIOD_DAYS;
  push @pay_periods, "$new_start to $new_end";


You can make the list ordered from most recent period to least recent
by saying:

unshift @pay_periods, "$new_start to $new_end";



  $last_period_end = $new_end;
}



> my $period_counter = 0; > foreach(reverse @pay_periods) { > $period_counter++; > last if($period_counter > 6); > push @final_pay_periods, $_; > }

Not necessary to do the above, but need this statement to
limit @pay_periods to most recent 6 periods (if there are 6)

splice @pay_periods, 6 if @pay_periods > 6;

All good suggestions. Thanks. My code is now:


use constant PAY_PERIOD_DAYS => 7; # Boss wanted it changed to 1 week from 2
my @pay_periods;
my $last_period_end = Date::Simple->new('2004-01-10');
my $today = Date::Simple->new;
while($today > $last_period_end + 1) {
  my $new_start = $last_period_end + 1;
  my $new_end = $last_period_end + PAY_PERIOD_DAYS;
  unshift @pay_periods, "$new_start to $new_end";
  $last_period_end = $new_end;
}
splice @pay_periods, 6 if @pay_periods > 6;

--
Andrew Gaffney
Network Administrator
Skyline Aeronautics, LLC.
636-357-1548


-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>




Reply via email to