Here's one way using
DateTime.pm and
DateTime::Event::Cron, though it does not take into account holidays and assumes Mon-Fri 8 hrs per day. <shrug> :
use strict;
use warnings;
use DateTime;
my $start_date = DateTime->now();
my $end_date = $start_date + DateTime::Duration->new(months => 2);
print $start_date->datetime, "\n", $end_date->datetime, "\n\n";
use DateTime::Event::Cron;
my $crontab = '0 0 * * 1-5';
my $set = DateTime::Event::Cron->from_cron(
cron => $crontab,
start => $start_date,
before => $end_date
# to include $end_date, use 'end' rather than 'before'
);
my @weekdays = $set->as_list;
print scalar @weekdays, " weekdays : ", scalar @weekdays * 8, " work h
+ours\n";
Cheers,
Matt