Python 知道时间是否已经过去
我现在用这段代码来计算两个不同时间的差值Python 知道时间是否已经过去,python,python-datetime,Python,Python Datetime,我现在用这段代码来计算两个不同时间的差值 from time import strftime from datetime import datetime fmt = '%H:%M' currentTimeString = strftime(fmt) #get the current time gameTimeObject = datetime.strptime(time , fmt) currentTimeObject = datetime.strptime(currentTimeSt
from time import strftime
from datetime import datetime
fmt = '%H:%M'
currentTimeString = strftime(fmt) #get the current time
gameTimeObject = datetime.strptime(time , fmt)
currentTimeObject = datetime.strptime(currentTimeString, fmt)
diff = currentTimeObject-gameTimeObject
diff_minutes = diff.seconds/60
我有一个for循环,它循环不同的时间值,11:00,12:00,13:00,14:00
在本例中,假设当前时间为13:23
当时间过去的时候,我得到了我想要的结果,也就是说,11:00,12:00,13:00,但是到了14:00,diff_minutes的值是1403
这是一个问题,因为我是在代码执行之后才这样做的
if diff_minutes >= 0 and diff_minutes <= 47:
time = str(diff_minutes)
elif diff_minutes >= 48 and diff_minutes <= 58:
time = "HT"
elif diff_minutes >= 59 and diff_minutes <= 103:
time = str(diff_minutes)
elif diff_minutes >= 104 and diff_minutes <= 107:
time = "90'"
elif diff_minutes >= 108: # HERE IS THE PROBLEM <<<<<<-------
time = "FT"
如果diff_minutes>=0且diff_minutes=48且diff_minutes=59且diff_minutes=104且diff_minutes=108:#问题就出在这里所以我们真正应该做的是只处理datetime对象。当您对它们进行数学运算时,会生成timedelta对象。这些时间增量对象是可比较的。这使得编写代码成为秘书工作。另外,由于if/elif/else树是短路的,所以不需要检查时间是否介于两次之间,只是小于上限。我承认我对足球的专业知识仅限于知道这是一场90分钟的比赛,所以你可能需要调整这一点,但它应该给你一个想法
import datetime
def gametime(hour, minute):
now = datetime.datetime.now()
starttime = datetime.datetime.combine(datetime.date.today(), datetime.time(hour, minute))
dif = now - starttime
if dif < datetime.timedelta(seconds=48*60):
return dif.seconds / 60
elif dif < datetime.timedelta(seconds=58*60):
return "Half Time"
elif dif < datetime.timedelta(seconds=104*60):
return dif.seconds / 60
elif dif < datetime.timedelta(seconds=108*60):
return "90'"
else:
return "Final"
导入日期时间
def游戏时间(小时、分钟):
now=datetime.datetime.now()
starttime=datetime.datetime.combine(datetime.date.today(),datetime.time(小时,分钟))
dif=现在-开始时间
如果dif
附言:说真的,圭多
PPS:我应该在发布之前测试一下。很抱歉我没有这样做。您可能想要diff.total_seconds()
而不是diff.seconds
我很好奇为什么您不只是在datetime对象上执行操作。有什么原因吗?我不知道你的意思,如果有一个更有效的方法来做我正在做的事情,请张贴它@氚21你能展示你的确切进口量吗?我无法重现您的问题。在我发布解决方案之前,您实际上想做什么?具体来说,你想从中得到什么信息。(如果您愿意,请用这些信息编辑您的问题)我得到了以下信息:dif=now-starttime TypeError:-:'datetime.time'和'datetime.time'的不支持的操作数类型很好现在可以工作了,还请进行编辑,使它应该是/60而不是*60,因为我需要几分钟的时间。有没有办法只显示分钟数?我不需要毫秒@氚21不,当我不使用总秒数时,它返回到与以前相同的问题。尚未开始的时间给了我超过1000分钟的时差。当使用总秒数时,它会给我一个负值,这是很好的,我可以使用它。但是,我必须拆分该值以删除毫秒感谢帮助:顺便说一句