在python时间让我的脑袋有点扭曲。
快速摘要:我的应用应该从配置中读取一些时间(格式示例:' 23:03')然后while循环将当前时间与配置时间进行比较,并执行某些操作,如果每天一分钟的比赛。
我的问题是,当我编写if语句时,时间格式略有不同,并且在时间匹配时它不会返回true。
while True:
currentTime = datetime.datetime.now()
morningTime = datetime.datetime(*time.strptime(config.get('general','morningTime'), "%H:%M")[:6])
if (currentTime.time() == morningTime.time()):
#do stuff! times match
pprint (currentTime.time())
pprint (morningTime.time())
返回:
datetime.time(23, 3, 6, 42978)
datetime.time(23, 3)
我不希望特别想要与小于一分钟的任何东西完全匹配,那么我该如何比较时间呢?
答案 0 :(得分:3)
您可以丢弃从time
object检索到的秒和微秒:
now = currentTime.time().replace(second=0, microsecond=0)
pprint(now) # should print something like datetime.time(23, 3)
然后只需将时间与==
进行比较,即可获得精确到分钟的匹配时间。
答案 1 :(得分:1)
我强烈推荐Arrow进行数据操作。你可以这样做:
import arrow
current_time = arrow.now()
morning_time = arrow.get(config.get('general','morningTime'), 'HH:mm')
if current_time.minute == morning_time.minute:
certain_actions()
'HH:mm'
可能会因morningTime
的格式而异。