谁能帮我这个?我在具有以下格式的日志文件文件中有一个时间值:
2012 年 8 月 28 日星期二 09:50:06
我需要将此时间值转换为 unixtime。
问候
谁能帮我这个?我在具有以下格式的日志文件文件中有一个时间值:
2012 年 8 月 28 日星期二 09:50:06
我需要将此时间值转换为 unixtime。
问候
您最好的选择是Time::Piece
,这是一个核心模块,因此不需要安装。它有一个strptime
解析时间/日期字符串的epoch
方法和一个返回 Unix 纪元时间的方法
将其滚动到子程序中很方便,如下所示
use strict;
use warnings;
use Time::Piece ();
print date_to_epoch('Tue Aug 28 09:50:06 2012'), "\n";
sub date_to_epoch {
return Time::Piece->strptime($_[0], '%a %b %d %T %Y')->epoch;
}
输出
1346147406
这对我有用(需要DateTime::Format::Strptime
):
#!/usr/bin/perl
use strict;
use warnings;
use DateTime::Format::Strptime;
my $strp = DateTime::Format::Strptime->new(
pattern => '%a %b %d %H:%M:%S %Y',
locale => 'en_US',
time_zone => 'local', # Or even something like 'America/New_York'
on_error => 'croak',
);
my $dt = $strp->parse_datetime('Tue Aug 28 09:50:06 2012');
print $dt->epoch() . "\n";
使用 Time::Piece 模块中的 strptime 函数解析日期,然后使用 strftime 函数返回 Unix 时间戳。
use Time::Piece;
$parsed = Time::Piece->strptime("Tue Aug 28 09:50:06 2012", "%a %b %e %T %Y");
$unixtime = $parsed->strftime("%s");