2014-12-18 8 views
3

dd/mm/yyyy 형식을 에포크 시간으로 변환하는 수식을 몇 시간 동안 검색했지만 해결책을 찾지 못했습니다.Perl에서 dd/mm/yyyy를 epoch 시간으로 변환하는 방법은 무엇입니까?

두 개의 다른 형식으로 변환 한 후 두 날짜가 있습니다.이 형식은 이제 "08011985"및 "09302014"와 같습니다. 가장 오래된 날짜와 가장 늦은 날짜의 차이를 얻기 위해 시간대로 변환해야하며 스프레드의 크기에 따라 무언가를해야합니다.

모듈을 설치할 수없고 5.8.8입니다.

+5

하지 겉으로을 처리하는 방법에는 여러 가지가 있습니다 모듈을 설치할 수 있습니다. 아마도 상황을 질문으로 게시하고 좋은 대답을 얻는 지 확인해야합니다. Perl을 사용하는 삶은 훨씬 더 즐겁습니다. – Schwern

+0

"어떻게 dd/mm/yyyy를 Perl에서 기점 시간으로 변환합니까?" 간결한거야? 몇 시간을 보내고, 예제를 복사하는 등 운이 없다! – dbonneville

+2

"나는 어떤 모듈도 설치할 수 없다"라는 문제를 고치기를 제안합니다. – Schwern

답변

0

여기에 항상 펄 5의 핵심 구성 요소

use strict; 
use warnings; 

use Time::Local qw/ timelocal /; 

for my $date (qw/ 08011985 09302014 /) { 
    print epoch_for_mmddyyyy($date), "\n"; 
} 

sub epoch_for_mmddyyyy { 
    my ($m, $d, $y) = unpack 'A2A2A4', shift; 
    timelocal(0, 0, 0, $d, $m-1, $y); 
} 

출력 된 Time::Local 모듈을 사용하여 예제

491698800 
1412031600 
+0

솔루션으로 내 대답을 선택 했으므로 서브 루틴에서 필요한 기능을 제공하도록 솔루션을 수정했습니다. – Borodin

5

내장 모듈 Time::Local은 localtime 및 gmtime, timelocal 및 timegm의 역함수를 제공합니다. 그들은 날짜와 시간을 가져 와서 시간을 되 돌린다.

perlfaq4은 이러한 종류의 질문을 다룹니다.

+0

나는 이것을 perlfaq4에서 지금 시도했다. '$ time = timelocal ($ sec, $ min, $ hour, $ mday, $ mon, $ year); 인쇄 "시간 =". $ 시간. "\ n"; ' ...이 오류가 발생합니다. "일' '범위를 벗어났습니다. 1.31"및 코드가있는 내 스크립트의 줄 번호. – dbonneville

+0

월은 1 월에서 12 월까지 '0'에서 '11'까지 계산됩니다. 문제가 될 수 있습니다. –

+2

@ dbonneville, 실제로'$ mday'에 유효한 값을 제공 했습니까? 코멘트는 새로운 질문을하기에 적절한 장소가 아닙니다. – ikegami