如何正确比较时间(以分钟和小时表示)?

时间:2018-08-13 07:38:30

标签: python

current_hour = 12
current_minute = 37
current_section = "PM"
due_hour = 9
due_minute = 0
due_section = "AM"

给出当前时间和截止时间 上面的变量,确定分配是否仍然符合条件 提交。如果时间合适,则分配是合格的 由current_hour,current_minute和 current_section在due_hour表示的时间之前, due_minute和due_section。

我的代码是

total_min_cur=((current_hour*60)+current_minute)
total_min_due=((due_hour*60)+due_minute)
print((total_min_cur<=total_min_due)  and (due_section >= current_section) )

我们测试了您的代码,其中due_minute = 0,current_hour = 12,current_minute = 37,Due_section =“ AM”,due_hour = 9,current_section =“ AM”。我们希望您的代码能够打印出此内容:

但是,它打印了这个:

错误

3 个答案:

答案 0 :(得分:1)

尝试在24小时内转换解决方案,然后比较结果。 当您的情况下Due_section和current_section相等时。您的程序在11:59之前对所有total_min_cur和total_min_due都是正确的。之后,您的程序正在考虑total_min_cur> total_min_due,但实际上是相反的。

答案 1 :(得分:1)

这将有助于解决它

current_hour = 12
current_minute = 37
current_section = "PM"
due_hour = 9
due_minute = 0
due_section = "AM"
if current_section=="AM" and current_hour==12:
    current_time_24=0+current_minute
    # print(current_time_24)
elif current_section=="AM":
    current_time_24=current_hour*60+current_minute
    # print(current_time_24)
elif current_section=="PM":
    current_time_24=(current_hour+12)*60+current_minute
    # print(current_time_24)

if due_section=="AM" and due_hour==12:
    due_time_24=0+due_minute
    # print(due_time_24)
elif due_section=="AM":
    due_time_24=due_hour*60+due_minute
    # print(due_time_24)
elif due_section=="PM":
    due_time_24=(due_hour+12)*60+due_minute
    # print(due_time_24)

print(current_time_24<due_time_24)

答案 2 :(得分:0)

首先current_hour<=due_hour-> 12<=9False 并且您正在使用>=进行字符串化。 AM不大于PM(按字母顺序排列)。所以False and FalseFalse 其次,您正在比较危险的字符串,因为:

In [1]: "am" < "pm"
Out[1]: True

In [2]: "am" < "Pm"
Out[2]: False

您应该这样做print((total_min_cur>total_min_due) and (due_section < current_section) ),您会得到True。 将due_sectioncurrent_section更改为有用的内容,例如枚举,对象或布尔值(例如:morning=True)。 或至少转换为相同的大小写s.lower()