% vim: ft=prolog :- use_module(library(julian)). :- use_module(library(tap)). :- set_prolog_flag(double_quotes, codes). 'precisely known times' :- form_time(rfc3339("2000-01-02T03:04:05.0678"), A), form_time(rfc3339("2001-02-03T04:05:06.0789"), B), compare_time(<,A,B), \+ compare_time(=,A,B), \+ compare_time(>,A,B), compare_time(O,A,B), O == (<). 'minutes of adjacent days' :- form_time([2006-12-09, 08:17:_], A), form_time([2006-12-10, 08:17:_], B), compare_time(<,A,B), \+ compare_time(=,A,B), \+ compare_time(>,A,B), compare_time(O,A,B), O == (<). 'adjacent days' :- form_time([1983-02-28], A), form_time([1983-03-01], B), compare_time(<,A,B), \+ compare_time(=,A,B), \+ compare_time(>,A,B), compare_time(O,A,B), O == (<). 'a day and the preceding year' :- form_time([2000-02-29], A), form_time([1999-_-_], B), \+ compare_time(<,A,B), \+ compare_time(=,A,B), compare_time(>,A,B), compare_time(O,A,B), O == (>). 'describing future dates' :- form_time(2013-08-02, Today), compare_time(<,Today,Future), forall( member(YMD, [2013-08-03, 2013-08-04, 2014-_-_]) , form_time(YMD, Future) ), forall( member(YMD, [2013-08-01, 2013-07-31, 2012-_-_]) , \+ form_time(YMD, Future) ). 'form against form' :- compare_time( O , rfc3339("2007-06-05T04:03:01") , rfc3339("1970-12-31T23:47:18.729") ), O == (>).