如何比较小时和分钟?

新手上路,请多包涵

我有四个变量:

 start_hour = '12'
start_minute = '00'
end_hour = '22'
end_minute = '30'

从日期时间开始:

 current_hour = datetime.now().hour
curren_minute = datetime.now().minute

我想比较当前时间是否在范围内:

 if int(start_hour) <= current_hour and int(end_hour) >= current_hour:
    something

但是如何用分钟来实现呢?

原文由 Nips 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 919
2 个回答

一个更好的方法是将这两个时间都转换为分钟:

 start_time = int(start_hour)*60 + int(start_minute)
end_time = int(end_hour)*60 + int(end_minute)
current_time =  datetime.now().hour*60 +datetime.now().minute
if start_time <= current_time and end_time >= current_time:
    #doSomething

如果您需要包括秒,请将所有内容转换为秒。

原文由 Vaibhav Bajaj 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 datetime.timedelta 可靠地进行比较。您可以指定不同时间单位(小时、分钟、秒等)的增量,然后您不必担心显式转换为小时、分钟等。

例如,要检查当前时间是否距离 start_time 超过一个小时:

 if abs(datetime.now() - start_time) > datetime.timedelta(hours=1):
    # Do thing

您还可以使用 timedelta 将时间移动给定数量:

 six_point_five_hours_from_now = datetime.now() + datetime.timedelta(hours=6, minutes=30)

关于 timedelta 的好处除了单位之间的简单转换之外,它会自动处理跨越多天的时差等。

原文由 Suever 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题