python - 尝试发出正常运行时间命令(在上午 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)
解决方案
我不确定您为什么要将时间转换为%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())
就足够了),然后使用它计算差异。这将考虑到日期/时间的所有相关项目。
推荐阅读
- c# - 获得给定货币汇率之间的短路径的算法
- asp.net-mvc - 将查询字符串参数传递给 MVC 控制器中的 JsonResult 操作
- r - 对两个匹配的字符串/单词使用 ifelse 函数
- javascript - 无法将包发布到 npm
- php - 测试 laravel 社交名流重定向
- powershell - powershell 斐波那契数列提前停止
- angular - 以角度执行父函数的无效元素
- sql-server - 不使用数据驱动订阅不发送没有数据的电子邮件
- java - 从子对象设置父变量并由其他子对象使用
- php - 在 PHP Trait Laravel 5.5 中使用从父类导入的类