Time 如何将时间与Prolog中指定的时间范围进行比较?

Time 如何将时间与Prolog中指定的时间范围进行比较?,time,prolog,compare,range,Time,Prolog,Compare,Range,假设我有一个结构比较时间(小时,分钟), 当用户键入示例comparetime(10,40)时, 该结构将在指定的时间范围内进行比较 输入的时间 1) 从10:00到12:00将打印一条消息并 2) 从18:00到20:00将打印一条消息。 如果键入的时间不在范围内,它也会打印消息 我该怎么做 比较单词很容易,但我真的很难比较时间 比较单词容易吗? 当涉及到国际化时,您应该尝试一下,以了解这有多么困难! 比较一对整数要容易得多,就像你的问题一样(如果我理解这个问题的话) message_on_r

假设我有一个结构比较时间(小时,分钟), 当用户键入示例comparetime(10,40)时, 该结构将在指定的时间范围内进行比较 输入的时间
1) 从10:00到12:00将打印一条消息并 2) 从18:00到20:00将打印一条消息。 如果键入的时间不在范围内,它也会打印消息

我该怎么做

比较单词很容易,但我真的很难比较时间

比较单词容易吗? 当涉及到国际化时,您应该尝试一下,以了解这有多么困难! 比较一对整数要容易得多,就像你的问题一样(如果我理解这个问题的话)

message_on_range(1, 10:00, 12:00, 'it\'s morning!').
message_on_range(2, 18:00, 20:00, 'it\'s evening!').

comparetime(Hours, Mins) :-
    message_on_range(_, Start, Stop, Message),
    less_equal_time(Start, Hours:Mins),
    less_equal_time(Hours:Mins, Stop),
    write(Message), nl.
comparetime(_Hours, _Mins) :-
    write('please check your clock!'), nl.

less_equal_time(H1:S1, H2:S2) :-
    H1 == H2 -> S1 =< S2 ; H1 < H2.
...
        less_equal_time(Hours:Mins, Stop),
        write(Message), nl, !.