Heylo,
我想计算(仅使用默认的Perl安装)两个日期之间的天数.这两个日期的格式就像04年5月04日. (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 "," days\n"; print $d1->delta_days($d2)->delta_days," days\n";