比较python

时间:2015-11-29 23:51:52

标签: python

在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)

我不希望特别想要与小于一分钟的任何东西完全匹配,那么我该如何比较时间呢?

2 个答案:

答案 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的格式而异。