如何在perl中获取两个日期之间的年份差异,如下面的日期
my $date1 = '2012-08-29T00:00:00.0000Z'
my $date2 = '2010-08-29T00:00:00.0000Z'
需要帮助和建议。谢谢
如何在perl中获取两个日期之间的年份差异,如下面的日期
my $date1 = '2012-08-29T00:00:00.0000Z'
my $date2 = '2010-08-29T00:00:00.0000Z'
需要帮助和建议。谢谢
use DateTime::Format::RFC3339 qw( );
my $format = DateTime::Format::RFC3339->new();
my $dt1 = $format->parse_datetime('2010-08-29T00:00:00.0000Z');
my $dt2 = $format->parse_datetime('2012-08-29T00:00:00.0000Z');
my $dur = $dt2 - $dt1;
say sprintf "%d years", $dur->in_units('years');
参考:DateTime , DateTime::Duration , DateTime::Format::RFC3339
其他人将发布的正确解决方案的轻量级替代方案:
my $date1 = '2012-08-29T00:00:00.0000Z';
my $date2 = '2010-08-29T00:00:00.0000Z';
my $years_diff = do { no warnings "numeric"; $date1 - $date2 };
请注意,在这个看似微不足道的问题中,可能有几十种不同的方法可以指定如何对部分年份进行四舍五入。
如果您不关心小时或闰年,您可以截断时间并使用 Date::Simple。
my $days = Date::Simple->new(substr $date2, 0, 10) - Date::Simple->new(substr $date1, 0, 10);
my $years = int($days / 365);