[英]Python TypeError: an integer is required comparing times
有很多與我的問題相似的話題,但是我找不到正確的答案。
我的目標是創建一個if語句,將現在的時間與時間表(由開始時間和結束時間定義的時間表)進行比較。
如果我為時間表添加了特定的數字,則可以正常工作,但是我需要將變量傳遞到語句中,以確保時間表不會是靜態的。
到目前為止,我有:
import time as sleeptime
from datetime import datetime, time
schedule_list = []
def scheduler():
conn = pymysql.connect(host='myhost', db='test', user='1234', passwd='123456', autocommit = True)
cur = conn.cursor()
query = ("SELECT startTimehour, startTimeminute, endTimehour, endTimeminute FROM schedule WHERE hwID = %s")
print query
cur.execute(query, (number))
for row in cur:
print row
door_schedule_list.append(row)
cur.close()
conn.close()
if len(door_schedule_list) > 0:
start_time_hour = door_schedule_list[0][0]
start_time_minute = door_schedule_list[0][1]
end_time_hour = door_schedule_list[0][2]
end_time_minute = door_schedule_list[0][3]
print start_time_hour
print start_time_minute
print end_time_hour
print end_time_minute
while True:
now = datetime.now()
#print (door_schedule_list)
#starttime = time(startTimehour, startTimeminute)
if time("%d","%d") <= now.time() <= time("%d","%d") % (start_time_hour, start_time_minute, end_time_hour, end_time_minute):
print "Schedule active"
sleeptime.sleep(20)
else:
print "Schedule Inactive"
sleeptime.sleep(20)
如果有更簡單的方法可以實現我的目標,請告訴我。 否則,我該如何解決錯誤。
當您這樣做時:
if time("%d","%d") <= now.time() <= time("%d","%d") % (start_time_hour, start_time_minute, end_time_hour, end_time_minute)
%
運算符未按照您認為的應做。
這是不一樣的:
time("%d" % 5, "%d" % 4)
比
time("%d", "%d") % (5, 4)
最后一行會報錯:必須an integer is required
。
您也可以:
hours = 5
min = 4
time(hours, min)
因此,您可以將行更改為:
if time(start_time_hour, start_time_minute) <= now.time() <= time(end_time_hour, end_time_minute)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.