Мне нужно получить дату за 10 дней до введенной даты.
Вот мой сценарий - (Ссылка взята из ответа Дейва)
#!/usr/bin/perl
use strict;
use warnings;
use Time::Local;
use POSIX 'strftime';
my $DATE = $ARGV[0];
( $DATE =~ /(....)(..)(..)/ );
my ($day, $mon, $yr) = ( $3, $2, $1 );
my $midday = timelocal(0, 0, 12, $day, $mon, $yr);
my $midday_before = $midday - (10 * 24 * 60 * 60);
my $required_date = strftime('%Y-%m-%d', localtime($midday_before));
print "10 days to before ".$yr."-".$mon."-".$day." is : $required_date\n";
Но мой вывод выглядит так, что меня смущает:
$ perl get_date.pl 20200527
10 days to before 2020-05-27 is : 2020-06-17
Я ожидаю 2020-05-17
. Но это дает мне 2020-06-17
, что на 20 дней раньше моей введенной даты.
Я не хочу использовать DateTime
для этого. Поскольку при установке модулей возникает проблема с разрешением.