2011-03-27 8 views

답변

0

이 무엇 개월 여분의 일을 갖는 년 같은 길이 인과 도약하지와 약간 어색 가져옵니다. 당신이 convert_time/2 또는 convert_time를 실행할 수 있다면

timediff(time(Hours1, Minutes1, Seconds1), time(Hours2, Minutes2, Seconds2), Seconds) :- 
    Seconds is Seconds1-Seconds2 + 60*(Minutes1-Minutes2 + 60*(Hours1-Hours2)). 

:

당신을 시작하려면, 당신에게 유일한 계정 시간, 분, 초를 고려하는 조건의 버전을 줄거야/8을 사용하면이 프로세스가 훨씬 쉬울 것입니다. 직접 작성하는 대신 운영 체제의 시간 변환 루틴을 사용할 수 있기 때문입니다.

+0

/2 및 convert_time/8? – Kaarel

+0

@Kaarel : SWI-Prolog, GNU Prolog와 Sicstus Prolog는 그렇지 않습니다. – Raceimaztion

+0

어제 SWI-Prolog에서 도움을 (convert_time) 반환하지 않았기 때문에 찾을 수 없었습니다. 그 이유는 convert_time이 더 이상 사용되지 않으므로 대신 format_time/3 및 stamp_date_time/3을 사용하기 때문입니다. – Kaarel

1

SWI-Prolog는 사람이 읽을 수있는 시간 표현을 Epoch (1970-01-01)에서 초로 변환하는 여러 조건자를 제공합니다. 시간 (초)을 표시하면 차이 계산이 간단한 빼기 작업으로 바뀝니다. 예를 들면 :

timediff(DateTime1, DateTime2, Sec) :- 
     date_time_stamp(DateTime1, TimeStamp1), 
     date_time_stamp(DateTime2, TimeStamp2), 
     Sec is TimeStamp2 - TimeStamp1. 

사용법 : 프롤로그가 convert_time 제공

?- timediff(date(2001, 03, 04, 23, 0, 32, 0, -, -), 
      date(2001, 03, 04, 23, 1, 33, 0, -, -), Sec). 
Sec = 61.0. 
관련 문제