2011-09-09 111 views
0

我在解析SIP消息,我们需要在可读部分包含毫秒(即2011/09/08 00:10:17.997),我们需要将它们转换为Epoch时间Perl,我发现了很多从Human Readable to Epoch中使用但不包括毫秒的例子,这可能吗?我在CPAN中发现了DateTime,但是我在安装时遇到问题。因此寻找其他的选择: 例Perl人类可读的时间以毫秒为单位EPOCH

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

和打印:1315183552

+3

为什么不问你安装'DateTime'模块的错误? – Mat

+0

正确的应该是1315433417 – 2011-09-09 05:27:36

回答

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

Time :: HiRes :: time包括小数点后的毫秒如同DateTime :: hires_epoc perl -MTime :: HiRes = time - e'打印时间'#1315549005.29001 – CoffeeMonster

+2

其中...不是*新纪元时间*。 –

1

快速和肮脏的,如果你是在linux下:

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

确定设法修复DateTime(运行MAC)将尝试建议 – spicyramen

相关问题