两个日期之间的天/月/年

时间:2020-02-19 13:22:13

标签: perl date time date-arithmetic

我有两个约会。从其他应用程序从表中检索的一个格式为YYYYMMDD,第二个日期是本地时间,我需要在这两个日期之间设置天/月/年。

我尝试过

  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

今天可变的美元= 2020年2月19日星期三14:40:55

输出:251820094888

有什么想法吗? 预先感谢。

1 个答案:

答案 0 :(得分:5)

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
相关问题