2011-09-09 4 views
0

저는 SIP 메시지를 파싱 중이며 사람이 읽을 수있는 부분 (예 : 2011/09/08 00 : 10 : 17.997)에 밀리 초를 포함시켜야합니다. 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 –

답변

4

수정이 방지되는 시스템과 함께 무엇이든 문제 당신은 모듈을 설치하지 못했습니다.

예외가 발생하지 않으면 Epoch 시간에는 두 번째 해상도 만 있습니다. 밀리 초를 제거하고 Time::Local를 사용하여 변환이 정말 중요 경우 밀리 초를 사용하여 두 번째 라운드,

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

(당신은 당신의 SIP 메시지를 직접 구문 분석해야합니다).

+1

Time :: HiRes :: time은 10 진수 다음에 밀리 초를 포함합니다. DateTime :: hires_epoc perl -MTime :: HiRes = time - e 'print time'# 1315549005.29001 – CoffeeMonster

+2

에포크 타임 *이 아닙니다. –

1

당신이 리눅스에서하는 경우 :

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

Oktime 관리 (실행중인 MAC)를 수정하면 제안을 시도합니다 – spicyramen

관련 문제