2

誰でもこれを手伝ってもらえますか?次の形式の logfilefile に時間値があります。

火曜日 8 月 28 日 09:50:06 2012

この時間の値を unixtime に変換する必要があります。

よろしく

4

3 に答える 3

5

ここでの最良の選択は です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
于 2012-08-31T11:54:39.707 に答える
2

これは私にとってはうまくいきます(必要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";
于 2012-08-31T11:28:13.037 に答える
1

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");
于 2012-08-31T11:35:15.140 に答える