知道时间是否已经过去python

2024-09-30 05:32:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在用这个代码得到两个不同时间的差

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

在这个例子中,假设currentTime是13:23

当时间过去的时候,我得到了我想要的结果,11:00,12:00,13:00,但是当时间到了14:00时,差异分钟显示值1403

为什么这是一个问题,因为我是在代码执行之后才这样做的

^{pr2}$

正如你所看到的,还没有过去的时间将变为“FT”,因为我用if语句来判断一场比赛的时间是否已经结束。我该怎么解决这个问题?在

---按要求编辑更多我想做的事情的信息

所以我在这里要做的是把时间变量设置为足球比赛。以上提到的13:00等不同时间是游戏开始的时间。所以我想做的是,如果当前时间是13:23,那么我会把那场足球赛的时间标签改为23分钟,因为23分钟过去了。如果已经过去的总时间超过108分钟,那么这意味着游戏结束了,这就是为什么我在最后一个If语句中将时间变量设置为“FT”。在

正如我之前所说的,这就是问题发生的地方,因为diff_minutes给了我一个大于108分钟的值,当游戏尚未开始时,它会将时间变量更改为“FT”,这是错误的


Tags: fromimport游戏datetimetime时间diffft
1条回答
网友
1楼 · 发布于 2024-09-30 05:32:09

所以我们真正应该做的是只处理datetime对象。当你对它们进行数学运算时,会产生timedelta对象。这些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"

PS:说真的,圭多?在

PPS:我应该在发布之前测试一下。很抱歉我没有。在

相关问题 更多 >

    热门问题