如何检查7 00到18 00之间的时间

时间:2019-06-12 16:24:14

标签: python

我对此脚本有疑问。

named_tuple = time.localtime()
time_string = time.strftime("%H:%M", named_tuple)

if time_string > "7:00" or time_string < "18:00":

    print("day")
else:
    print("evening")

请问我该如何检查白天或晚上?

3 个答案:

答案 0 :(得分:2)

您可以从time.localtime()返回的小时中获取小时:

>>> time.localtime()
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=12, tm_hour=19, tm_min=..., tm_sec=..., tm_wday=2, tm_yday=163, tm_isdst=...)
>>> _.tm_hour
19

然后,您只需将tm_hour与所需的值进行比较:

Time = time.localtime()
if 7 <= Time.tm_hour <= 18:
    print('Yeah!')

如果您需要更加精确,请抓紧时间:

if (6, 45) <= (Time.tm_hour, Time.tm_min) <= (18, 5):
    ...

答案 1 :(得分:0)

现在,第一个语句将始终匹配。 您的时间将始终大于7:00或小于18:00。

or更改为and,它应该可以工作。

编辑: 我刚刚浏览了if语句,发现它已损坏。从根本上拥有或将会阻止else语句的执行。但是,再来看一遍,除了or问题之外,还有更多的错误发生。

就像@ForceBru提到的那样,您需要获取小时数,以便不进行字符串比较。

答案 2 :(得分:0)

您不能使用time_string来检查它是否大于“ 7:00”或小于“ 18:00”,因为它会按字母数字顺序对字符串进行排名。 例如,现在是12:32。我的time_string的第一个字符为“ 1”,小于“ 7”,因此即使中午也将打印“ evening”。 另外,您想检查是否晚于7:00和早于18:00。 也许您也可以添加更多选项,因为早于7:00的任何时间都会显示“晚上”。 至于如何做,请参见ForceBru的答案,这使其变得非常简单。