我正在尝试将格式为:08-07-2016 08:16:26 GMT的文件创建时间与perl中使用time()的当前时间进行比较。 由于time()返回纪元时间,我不知道如何找到这两种不同时间格式之间的时差。
我尝试了类似下面的内容,并且由于显而易见的原因,我收到一条错误消息:" Argument 08-07-2016 08:16:26 GMT"在减法"。
中不是数字my $current_time = time();
my $time_diff = $creation_time - $current_time;
if ($time_diff > 10) { #compare if the difference is greater than 10hours
# do something...
}
我遇到的一些问题:
OR有没有办法使用DateTime或Time :: Local将任何给定的时间格式转换为纪元?
如何将日期参数传递给DateTime构造函数?
my $dt1 = DateTime-> new (
year =>'1998',
month =>'4',
day =>'4',
hour =>'21',
time_zone =>'local'
);
相反,我们可以做类似
的事情my $date = '08-07-2016 08:16:26 GMT';
my $dt1 = DateTime->new($date); # how can i pass a parameter to the constructor
print Dumper($dt1->epoch);
提前感谢您的帮助。
答案 0 :(得分:2)
Time::Piece一直是Perl的标准组成部分。
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Time::Piece;
use Time::Seconds;
my $creation_string = '08-07-2016 08:16:26 GMT';
my $creation_time = Time::Piece->strptime($creation_string, '%d-%m-%Y %H:%M:%S %Z');
my $current_time = gmtime;
my $diff = $current_time - $creation_time;
say $diff; # Difference in seconds
say $diff->pretty;