我想计算(仅使用默认的Perl安装)两个日期之间的天数。两个日期的格式都类似04-MAY-09。 (DD-MMM-YY)
我找不到任何讨论该日期格式的教程。我应该为此格式构建自定义日期检查器吗?进一步阅读CPAN上的Date::Calc似乎不太可能支持此格式。

最佳答案

如果您关心准确性,请记住并非所有的日子都有86400秒。在某些情况下,基于该假设的任何解决方案都是不正确的。

这是一个片段,我使用DateTime库以几种不同的方式来计算和显示日期/时间差。我认为,最后印出的答案是您想要的答案。

#!/usr/bin/perl -w

use strict;

use DateTime;
use DateTime::Format::Duration;

# XXX: Create your two dates here
my $d1 = DateTime->new(...);
my $d2 = DateTime->new(...);

my $dur = ($d1 > $d2 ? ($d1->subtract_datetime_absolute($d2)) :
                       ($d2->subtract_datetime_absolute($d1)));

my $f = DateTime::Format::Duration->new(pattern =>
  '%Y years, %m months, %e days, %H hours, %M minutes, %S seconds');

print $f->format_duration($dur), "\n";

$dur = $d1->delta_md($d2);

my $dy = int($dur->delta_months / 12);
my $dm = $dur->delta_months % 12;
print "$dy years $dm months ", $dur->delta_days, " days\n";
print $dur->delta_months, " months ", $dur->delta_days, " days\n";
print $d1->delta_days($d2)->delta_days, " days\n";

10-06 02:23