加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何计算Perl中两个日期之间的天数?

发布时间:2020-12-15 22:03:53 所属栏目:大数据 来源:网络整理
导读:Heylo, 我想计算(仅使用默认的Perl安装)两个日期之间的天数.这两个日期的格式就像04年5月04日. (DD-MMM-YY) 我找不到任何讨论该日期格式的教程.我应该为这种格式建立自定义日期检查器吗?进一步阅读CPAN上的Date::Calc,这种格式似乎不太可能得到支持. 谢谢.
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," daysn";
print $dur->delta_months," months "," daysn";
print $d1->delta_days($d2)->delta_days," daysn";

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读