将日期时区与 perl 中的 time() 进行比较
Compare date time zone with time() in perl
我正在尝试比较格式为:08-07-2016 08:16:26 GMT 的文件创建时间与使用 perl 中的 time() 的当前时间。
由于 time() returns 纪元时间,我不确定如何找到这两种不同时间格式之间的时差。
我尝试了类似下面的方法,出于显而易见的原因,我收到一条错误消息:"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...
}
我的一些问题:
- 由于我只想比较时差,如何从这两种时间格式中只提取小时数?
- 我不确定 $time_diff > 10 的比较是否正确。如何表示10小时? 10*60?
或者有没有办法至少使用 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);
在此先感谢您的帮助。
Time::Piece 自 2007 年以来一直是 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;
我正在尝试比较格式为:08-07-2016 08:16:26 GMT 的文件创建时间与使用 perl 中的 time() 的当前时间。 由于 time() returns 纪元时间,我不确定如何找到这两种不同时间格式之间的时差。
我尝试了类似下面的方法,出于显而易见的原因,我收到一条错误消息:"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...
}
我的一些问题:
- 由于我只想比较时差,如何从这两种时间格式中只提取小时数?
- 我不确定 $time_diff > 10 的比较是否正确。如何表示10小时? 10*60?
或者有没有办法至少使用 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);
在此先感谢您的帮助。
Time::Piece 自 2007 年以来一直是 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;