我正在解析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
答案 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;