我正在解析 SIP 消息,我们需要在人类可读部分中包含毫秒(即 2011/09/08 00:10:17.997),我们需要使用 Perl 将它们转换为纪元时间,我发现了一堆使用来自 Human 的示例Epoch 可读,但不包括毫秒,这可能吗?我在 CPAN中找到了DateTime ,但我在安装它时遇到了问题。所以寻找其他选择:示例
$epoch = convert(2011/09/08 00:10:17.997)
print $epoch
和打印:1315183552
我正在解析 SIP 消息,我们需要在人类可读部分中包含毫秒(即 2011/09/08 00:10:17.997),我们需要使用 Perl 将它们转换为纪元时间,我发现了一堆使用来自 Human 的示例Epoch 可读,但不包括毫秒,这可能吗?我在 CPAN中找到了DateTime ,但我在安装它时遇到了问题。所以寻找其他选择:示例
$epoch = convert(2011/09/08 00:10:17.997)
print $epoch
和打印:1315183552
修复阻止您安装模块的系统问题。
除此之外,纪元时间只有第二个分辨率。去掉毫秒并使用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);
如果它真的很重要,请使用毫秒舍入秒。
如果你在 linux 下又快又脏:
$epoch = `date -d "2011/09/08 00:10:17.997" +%s`; print $epoch;