当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Python的timedelta:我不能在任何时间进入单位我想要整个差异的价值?》经验,为你挑选了4个好方法。

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

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

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

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



1> Ham..:

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



2> S.Lott..:

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

total_seconds = delta.days * 86400 + delta.seconds

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


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

3> bobince..:

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

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

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



4> itsadok..:

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

# assuming ts1 and ts2 are the two datetime objects
from time import mktime
mktime(ts1.timetuple()) - mktime(ts2.timetuple())

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


你可以进一步复杂化:`reduce(float .__ sub __,(mktime(d.utctimetuple())d in(ts1,ts2)))
推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有