На самом деле, из-за перегруженности DateTime, вы можете просто сделать: my $ dur = $ today - $ date;
код находит разницу между сегодняшним днем и фиксированной датой.
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use DateTime ();
use DateTime::Duration ();
use DateTime::Format::Strptime ();
my $date = "23/05-2022";
my $parser = DateTime::Format::Strptime->new(
pattern => '%d/%m-%Y',
time_zone => 'local',
);
$date = $parser->parse_datetime($date);
my $today = DateTime->today(time_zone=>'local');
my $d = DateTime::Duration->new($today - $date);
print Dumper $d->delta_days;
Проблема в том, что только выходы -22 дня.
Если я сделаюprint Dumper $d;
Я тоже вижу -130 месяцев.
$VAR1 = bless( {
'seconds' => 0,
'minutes' => 0,
'end_of_month' => 'preserve',
'nanoseconds' => 0,
'days' => -22,
'months' => -130
}, 'DateTime::Duration' );
Как мне заставить его выводить результат в днях?
дела
print Dumper $d->delta_days + $d->delta_months*30;
не выглядит как элегантное решение.