Python的timedelta:我不能在任何时间进入单位我想要整个差异的价值?

Bjo*_*orn 14 python datetime timedelta

我试图有一些聪明的日期,因为在我的网站上发布了一个帖子("从那以后的几秒钟,从那以后的几个小时,从那以后的几周......")我正在使用存储在其中的utcnow和utc之间的datetime.timedelta差异一个帖子的数据库.

看起来,根据文档,我必须使用days属性和seconds属性来获取我想要的花哨日期字符串.

难道我不能在任何时间进入单位我想要的全部差异的价值?我错过了什么吗?

如果我能在几秒钟内得到完整的差异,那将是完美的.

Ham*_*Ham 21

似乎Python 2.7引入了一个total_seconds()方法,我相信这就是你要找的东西!


S.L*_*ott 15

您可以以秒为单位计算差异.

total_seconds = delta.days * 86400 + delta.seconds
Run Code Online (Sandbox Code Playgroud)

不,你不是"错过了什么".它不会在几秒钟内提供增量.

  • 如果日期没有24小时(例如,由于夏令时的变化),这种方法(如Python 2.7中的`total_seconds()`将返回不正确的结果). (5认同)
  • 希望他们在timedeltas上有.total_seconds,.total_minutes等等...... (4认同)

bob*_*nce 5

如果我能在几秒钟内得到完整的差异,那将是完美的.

然后,'time'模块提供的plain-old-unix-timestamp可能更符合您的口味.

我个人还没有被'datetime'中的很多内容所说服.


its*_*dok 5

就像bobince所说,你可以使用时间戳,如下所示:

# assuming ts1 and ts2 are the two datetime objects
from time import mktime
mktime(ts1.timetuple()) - mktime(ts2.timetuple())
Run Code Online (Sandbox Code Playgroud)

虽然我认为这比仅仅计算timedelta物体的秒数更加丑陋......

  • 你可以进一步复杂化:`reduce(float .__ sub __,(mktime(d.utctimetuple())d in(ts1,ts2))) (3认同)