Perl人类可读时间,以EPOCH为单位,以毫秒为单位

时间:2011-09-09 05:20:20

标签: perl epoch

我正在解析SIP消息,我们需要在人类可读部分中包含毫秒(即2011/09/08 00:10:17.997)我们需要使用Perl将它们转换为Epoch时间,我已经找到了大量示例使用从Human Readable到Epoch,但不包括毫秒,这可能吗?我在CPAN中找到了DateTime,但我在安装它时遇到了问题。所以寻找其他选择: 示例

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

并打印:1315183552

2 个答案:

答案 0 :(得分:4)

修复阻止您安装模块的系统问题。

除此之外,大纪元时间只有第二个分辨率。剥去毫秒并使用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);

如果确实重要,请使用毫秒来绕过第二个。

答案 1 :(得分:1)

如果你在linux下,快速而且肮脏:

$epoch = `date -d "2011/09/08 00:10:17.997" +%s`; print $epoch;