Frage

I'm parsing SIP messages and we need to include milliseconds in the human readable part (i.e 2011/09/08 00:10:17.997) we need to convert them to Epoch time using Perl, I have found bunch of examples using from Human Readable to Epoch, but not including milliseconds, is this possible? I have found DateTime in CPAN but im having a problem installing it. so looking for other options: Example

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

and prints: 1315183552

War es hilfreich?

Lösung

Fix whatever problem it is with your system that is preventing you from installing a module.

Barring that, Epoch time only has second resolution. Strip off the milliseconds and convert using Time::Local (You'll need to parse your SIP message yourself)

$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);

If it's really important, round the second using the milliseconds.

Andere Tipps

Quick and dirty if you are under linux:

$epoch = `date -d "2011/09/08 00:10:17.997" +%s`; print $epoch;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top