请教两个 datetime.datetime 要计算小时差,怎么做会比较好? 要先转成 datetime.timedelta 再做吗?

2020-10-20 19:40:44 +08:00
 qazwsxkevin

有两个 datetime.datetime 数据
nowTime = datetime.datetime.now()
getFromdatabaseTime = dbTask.get('RecordTime')

如果: TimeResult = (nowTime - getFromdatabaseTime).seconds 可以得到一个数值,不过似乎不准的一个什么玩意。。。(汗)

鉴于印象中以前做过 datetime.timedelta 的计算,似乎 datetime.timedelta 的方法比较容易写,直观又方便 但看了一下文档,似乎又没提到 datetime.timedelta 和 datetime.datetime 的互转。
datetime.datetime 要转成 datetime.timedelta ? 这个应该怎么转?
反过来 datetime.timedelta 要转成 datetime.datetime ?
如果大哥们硬要把 datetime.datetime 以拆元组里面的值,分解写计算过程出结果,这就离谱了(笑,逃~)

1799 次点击
所在节点    Python
5 条回复
raymanr
2020-10-20 19:54:09 +08:00
datetime.datetime 是具体时间的数据类型
datetime.timedelta 是代表时间差的数据类型

我不清楚 datetime 怎么转换 timedelta, 会出什么问题

不过可以告诉你是 datetime - datetime 就会得到 timedelta, 然后 total_seconds / 3600 就是小时了

delta 是数学中常用来表示差值的希腊字符
Acoffice
2020-10-20 20:13:58 +08:00
你先转或者直接用时间戳减完,再转也是可以的。
raymanr
2020-10-20 20:46:00 +08:00
突然想起来了, timedelta 是由天数和秒数两个数值构成

比如 timedelta(days=1,seconds=22)

你访问的 seconds 属性只会返回秒数部分 22, 这是你代码有问题的地方

所以需要调用 total_seconds() 方法
qazwsxkevin
2020-10-21 00:02:07 +08:00
恍然大悟,total_seconds()
感谢!!
shm7
2020-10-21 12:54:50 +08:00
@qazwsxkevin 这还需要恍然大雾嘛。

官方文档丢给你: https://docs.python.org/3.6/library/datetime.html
直接取 timedelta 的 seconds 属性就行了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/716832

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX