2011-09-09 74 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

相關問題