如何在Perl中比较日期字符串

Ara*_*rav 2 perl

我有两个包含日期值的 Perl 字符串变量。我想检查 str1 变量日期值是否比 str2 值早 1 天。我该如何检查?如果它在 str2 之前没有 1 天,那么我需要打印一条错误消息。

 $str1="20120704"
 $str2="20120705
Run Code Online (Sandbox Code Playgroud)

Dav*_*oss 5

使用标准的 Time::Piece 模块

#!/usr/bin/perl

use strict;
use warnings;
use 5.010;

use Time::Piece;

my $format = '%Y%m%d';

while (<DATA>) {
  chomp;
  my ($str1, $str2) = split;

  my $dt1 = Time::Piece->strptime($str1, $format);
  my $dt2 = Time::Piece->strptime($str2, $format);

  print "$str1 / $str2: ";
  if ($dt2->julian_day - $dt1->julian_day == 1) {
    say "ok";
  } else {
    say "not ok";
  }
}

__END__
20120704 20120705
20120630 20120701
Run Code Online (Sandbox Code Playgroud)