誰でもこれを手伝ってもらえますか?次の形式の logfilefile に時間値があります。
火曜日 8 月 28 日 09:50:06 2012
この時間の値を unixtime に変換する必要があります。
よろしく
誰でもこれを手伝ってもらえますか?次の形式の logfilefile に時間値があります。
火曜日 8 月 28 日 09:50:06 2012
この時間の値を 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");