프롤로그에서 두 날짜 간의 시차 (초)를 어떻게 확인할 수 있습니까?프롤로그에서 두 날짜 사이의 시차 (초)를 어떻게 찾을 수 있습니까?
datetime (200103042300,32).
datetime (200103042301,33).
timediff (D1, D2, Sec).
초 = 61
프롤로그에서 두 날짜 간의 시차 (초)를 어떻게 확인할 수 있습니까?프롤로그에서 두 날짜 사이의 시차 (초)를 어떻게 찾을 수 있습니까?
datetime (200103042300,32).
datetime (200103042301,33).
timediff (D1, D2, Sec).
초 = 61
이 무엇 개월 여분의 일을 갖는 년 같은 길이 인과 도약하지와 약간 어색 가져옵니다. 당신이 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을 사용하면이 프로세스가 훨씬 쉬울 것입니다. 직접 작성하는 대신 운영 체제의 시간 변환 루틴을 사용할 수 있기 때문입니다.
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.
/2 및 convert_time/8? – Kaarel
@Kaarel : SWI-Prolog, GNU Prolog와 Sicstus Prolog는 그렇지 않습니다. – Raceimaztion
어제 SWI-Prolog에서 도움을 (convert_time) 반환하지 않았기 때문에 찾을 수 없었습니다. 그 이유는 convert_time이 더 이상 사용되지 않으므로 대신 format_time/3 및 stamp_date_time/3을 사용하기 때문입니다. – Kaarel