使用 perl 以 YYYY-MM-DD HH:mm:ss 格式减去两个日期

jms*_*980 1 perl datetime date

我有两个格式为 YYYY-MM-DD HH:mm:ss 的日期,我想找到它们之间的小时数。这些日期是 2020-10-26 12:00:00 和 2020-10-27 18:00:00。

下面是我用来查找小时数的代码片段:

use Time::Piece

my $date1 = '2020-10-26 12:00:00';
my $date2 = '2020-10-27 18:00:00';

my $format = '%Y-%m-%d %H:%M:%S';

my $diff = Time::Piece->strptime($date1,$format) - Time::Piece->strptime($date2,$format);
Run Code Online (Sandbox Code Playgroud)

这应该给我以天为单位的时间,我可以轻松地将其转换为小时,但出现错误:

Invalid version format (non-numeric data) at /usr/share/perl5/vendor_perl/Exporter/Heavy.pm line 120.
BEGIN failed--compilation aborted at test_diff.pl line 5.
Run Code Online (Sandbox Code Playgroud)

如何调整代码以获得所需的结果?

cho*_*oba 5

use行需要一个分号。如果没有它,下一行将被解释为Time::Pieceimport方法的参数。

添加分号后,$diff包含以秒为单位的时间,而不是天。

要获得天数差异,您可以

use Time::Seconds;
...
my $days = $diff / ONE_DAY;
Run Code Online (Sandbox Code Playgroud)

请注意,由于夏令时的变化,结果可能是错误的。