SWI-Prolog предлагает несколько предикатов, которые преобразуют воспринимаемые человеком представления времени в секунды от эпохи (в 1970-01-01). Время, представленное в виде количества секунд, превращает вычисление разницы в простую операцию вычитания. Например:
timediff(DateTime1, DateTime2, Sec) :-
date_time_stamp(DateTime1, TimeStamp1),
date_time_stamp(DateTime2, TimeStamp2),
Sec is TimeStamp2 - TimeStamp1.
Использование:
?- timediff(date(2001, 03, 04, 23, 0, 32, 0, -, -),
date(2001, 03, 04, 23, 1, 33, 0, -, -), Sec).
Sec = 61.0.