Этот код находит разницу между сегодняшней и фиксированной датой.
#!/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;
не выглядит как элегантное решение.