0

私はSIPメッセージを解析しており、人間が読める部分(つまり、2011/09/08 00:10:17.997)にミリ秒を含める必要があります。Perlを使用してエポック時間に変換する必要があります。エポックに読めるが、ミリ秒は含まない、これは可能ですか?CPANでDateTimeを見つけましたが、インストールに問題があります。したがって、他のオプションを探します:例

$epoch = convert(2011/09/08 00:10:17.997)
print $epoch

とプリント:1315183552

4

2 に答える 2

5

モジュールのインストールを妨げているシステムの問題を修正します。

それを除けば、エポック時間には2番目の解像度しかありません。ミリ秒を取り除き、Time :: Localを使用して変換します(SIPメッセージを自分で解析する必要があります)

$timestamp = "2011/09/08 00:10:17.997";
$timestamp =~ /(\d{4})\/(\d{2})\/(\d{2}) (\d{2}):(\d{2}):(\d{2})/;

# ($sec,$min,$hour,$mday,$mon,$year);
$epoch = timelocal($6, $5, $4, $3, $2 - 1, $1 - 1900);

それが本当に重要な場合は、ミリ秒を使用して秒を丸めます。

于 2011-09-09T05:26:29.130 に答える
1

Linuxを使用している場合は、すばやく汚いです。

$epoch = `date -d "2011/09/08 00:10:17.997" +%s`; print $epoch;
于 2011-09-09T05:26:25.030 に答える