my $start = ParseDate('now');
my $end = "2017123123:59:59";
# Instead of
my ($start, $end) = qw(2017-01-01 2017-12-31);
####
#!/usr/bin/perl
use strict;
use warnings;
use Date::Manip;
use feature 'say';
my ($start, $end) = qw(2017-01-01 2017-12-31);
# y:m:w:d:h:m:s
my @days = ParseRecur('0:0:0:1:0:0:0', $start, $start, $end);
my @weeks = ParseRecur('0:0:1::0:0:0', $start, $start, $end);
my @months = ParseRecur('0:1:0::0:0:0', $start, $start, $end);
my @years = ParseRecur('1:0:0::0:0:0', $start, $start, $end);
my @datesEvery15th = ParseRecur('0:0:0:15:0:0:0', $start, $start, $end);
say "Number of days: " . scalar @days;
say "Number of weeks: " . scalar @weeks;
say "Number of months: " . scalar @months;
say "Number of years: " . scalar @years;
say "Number of payments: " . scalar @datesEvery15th;
=print payment dates
for my $date (@dates15th) {
say UnixDate($date, "%Y-%m-%d");
}
=cut
__END__
$ perl test.pl
Number of days: 365
Number of weeks: 53
Number of months: 12
Number of years: 1
Number of payments: 25
####
for my $date (@datesEvery15th) {
if (Date_IsWorkDay($date)) {
say UnixDate($date, "%Y-%m-%d");
}
else {
my $nearestWorkingData = Date_NearestWorkDay($date);
say UnixDate($nearestWorkingData, "%Y-%m-%d");
}
}
__END__
2017-10-09
2017-10-24
2017-11-08
2017-11-23
2017-12-08
2017-12-22
####
#!/usr/bin/perl
use strict;
use warnings;
use Date::Manip;
use feature 'say';
use Data::Dumper;
my $dateLocal = ParseDate('now');
# say $dateLocal;
my $end = "2017123123:59:59";
my $dateStartLocal = ParseDate($dateLocal);
my $dateEnd = ParseDate($end);
my $deltaLocal = DateCalc( $dateStartLocal,
$dateEnd,
1 );
say $deltaLocal;
my @dataLocal = split(/:/, $deltaLocal);
my @values = qw(year(s) month(s) week(s) day(s) hour(s) minute(s));
my %hashLocal;
@hashLocal{@values} = @dataLocal;
print Dumper \%hashLocal;
###### Different Timezone(s) ######
# From timeZone To timeZone
my $dateTimeZone = Date_ConvTZ($dateLocal,"GMT","CST");
my $dateStartTimezone = ParseDate($dateLocal);
my $deltaTimezone = DateCalc( $dateStartTimezone,
$dateEnd,
1 );
say $deltaTimezone;
my @dataTimezone = split(/:/, $deltaTimezone);
my %hashTinezone;
@hashTinezone{@values} = @dataTimezone;
print Dumper \%hashTinezone;
__END__
$ perl test.pl
0:2:3:1:9:13:31
$VAR1 = {
'week(s)' => '3',
'month(s)' => '2',
'minute(s)' => '13',
'hour(s)' => '9',
'day(s)' => '1',
'year(s)' => '0'
};
0:2:3:1:9:13:31
$VAR1 = {
'year(s)' => '0',
'day(s)' => '1',
'minute(s)' => '13',
'hour(s)' => '9',
'week(s)' => '3',
'month(s)' => '2'
};