首页 > 解决方案 > 尝试发出正常运行时间命令(在上午 12 点之后转换为 -1 天)python

问题描述

好的,所以这很有效,但是在上午 12 点之后它会将其转换为 -1day,这令人沮丧,因为我不确定如何对其进行编辑以使其不那样做。我该如何解决这个问题?

from datetime import datetime


with open("bot uptime.txt", "w") as f:
    f.writelines(datetime.now().time().strftime('%H:%M:%S')) # on startup of bot write the time in a file

timenow = datetime.now().time().strftime('%H:%M:%S') # finds time now


file = open("bot uptime.txt")
startuptime = file.readline() # reads the startup time
print(startuptime)

s1 = startuptime
s2 = timenow
FMT = '%H:%M:%S'
tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT) # calculates the difference between the two times
print(tdelta)

标签: pythontimetimer

解决方案


我不确定您为什么要将时间转换为%H:%M:%S,从而丢失月份、月份和年份等信息。Dec 24, 23:30:00如果您从12 月 25 日 00:30:00开始并检查,您丢弃日期信息的事实意味着计算将是:

  2020-12-25 00:30:00
- 2020-12-25 23:30:00
  ===================
            -23:00:00

(或其他一些负值,我没有详细检查过,但这会很糟糕)。

我建议只存储自纪元以来的秒数(当然是UTC,所以类似的东西int(time.time())就足够了),然后使用它计算差异。这将考虑到日期/时间的所有相关项目。


推荐阅读