Days/Months/Years 两个日期之间

Days/Months/Years between two dates

我有两个约会对象。一个以 YYYYMMDD 格式从其他应用程序的 table 中检索到,第二个日期是当地时间,我需要在这两个日期之间 Days/Months/Years。

我试过了

  my $t = Time::Piece->strptime($expi, "%Y %m %d"); #First date
  my $today = Time::Piece->new; #Localtime

  my $diff = $t - $today; 
  print $diff;

但这给了我一些乱码。

变量 $t = 12 月 31 日星期五 00:00:00 9999

变量 $today = 2 月 19 日星期三 14:40:55 2020

输出:251820094888

有什么想法吗? 提前致谢。

Time::Piece 最多可以让你得到秒数的差异,并且无法将其转换为月、天等。

use DateTime                   qw( );
use DateTime::Format::Strptime qw( );

my $format = DateTime::Format::Strptime->new(
   pattern   => '%Y%m%d',
   time_zone => 'floating',
   on_error  => 'croak',
);

my $today =
   DateTime
   ->now( time_zone => 'local' )
   ->set_time_zone('floating')
   ->truncate( to => 'day' );

my $dt = $format->parse_datetime('20200101');

my $diff = $today - $dt;

printf("%d years, %d months and %d days\n", $diff->in_units(qw( years months days )));

输出:

0 years, 1 months and 18 days