Perl DateTime持续时间格式不显示年份

dma*_*nce 2 perl datetime difference

我在计算两个日期之间的差值时遇到麻烦。

my $todayDate = DateTime->now;
my @updateDateFields = split /\//, $proteinObj->{lastUpdate}; #yyyy/mm/dd

my $updateDateTime = DateTime->new(
    year => @updateDateFields[0],
    month=> @updateDateFields[1],
    day=> @updateDateFields[2]
);

my $daysSinceLastUpdate = $todayDate - $updateDateTime;

my $dfd = DateTime::Format::Duration->new(pattern => '%Y years, %m months, %e days');
print "Last update was: ". $dfd->format_duration($daysSinceLastUpdate). " ago.\n";
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

最后更新日期:2015/01/13最近更新为:0年22个月0天前。

它不会显示1年10个月0天前。

Bor*_*din 5

您需要像这样启用对象中的normalise选项DateTime::Format::Duration

my $dfd = DateTime::Format::Duration->new(
    pattern   => '%Y years, %m months, %e days',
    normalise => 1,
);
Run Code Online (Sandbox Code Playgroud)

  • 在stackoverflow上的“感谢” =赞成/接受。 (7认同)