我有两个约会。从其他应用程序从表中检索的一个格式为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
有什么想法吗? 预先感谢。
答案 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