我对此脚本有疑问。
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")
请问我该如何检查白天或晚上?
答案 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的答案,这使其变得非常简单。