如何在perl中找到两个日期之间的差异?

rob*_*ing 3 perl date

在perl中,根据用户输入的日期,我如何检查从今天起12个月后不会更长?

我试过这种方式:

#!/usr/bin/env perl
use 5.010;
use warnings;
use DateTime;
use Data::Dumper;

$given = DateTime->new( year=>"2013", month => "11", day =>"23" );
$now = DateTime->now;
$delta = $given->delta_md($now);

say $delta->months;
print Dumper($delta);
Run Code Online (Sandbox Code Playgroud)

但我得到的输出是这个.为什么$ delta->月份值与自卸车的价值不同?

11
$VAR1 = bless( {
                 'seconds' => 0,
                 'minutes' => 0,
                 'end_of_month' => 'wrap',
                 'nanoseconds' => 0,
                 'days' => 24,
                 'months' => 23
               }, 'DateTime::Duration' );
Run Code Online (Sandbox Code Playgroud)

Nik*_*RIP 6

该方法months日期时间::期限剩余期限的月份部分转换后的较大的单位(年).内部数据结构以不同的方式存储完整的持续时间(1a,11m).

年,月,周,日,小时,分钟,秒,纳秒

这些方法返回数字,表示在完成对任何较大单位的转换后,对象所代表的单位数量.例如,首先将天数转换为星期,然后返回余数.这些数字总是积极的.

为了获得这个价值,我认为你需要$dur->in_units( 'months' );.