获取delta天数而不是其格式

时间:2018-05-24 08:23:35

标签: python

我有以下代码,我想得到delta天数而不是格式:

now = datetime.datetime.now()

com_day = now + datetime.timedelta(days=7.23)

delta_days = com_day - now

print(delta_days)  # there gets the `7 days, 5:31:12`

我希望7.23代替7 days, 5:31:12

如何获得要求?

2 个答案:

答案 0 :(得分:1)

当你在Python中从另一个中减去日期时间时,你得到一个timedelta对象:

> from datetime import datetime, timedelta
> d1 = datetime (year=2015, month=6, day=1, hour=12, minute=30)
> d2 = datetime (year=2015, month=6, day=7, hour=18, minute=15)
> td = d2 - d1
> td
datetime.timedelta(6, 20700)
> type (td)
datetime.timedelta

不幸的是,timedelta只返回"部分"弥补它 - 天,秒和微秒:

> td.days, td.seconds, td.microseconds
(6, 20700, 0)

解决方案

在Python 3中,您可以将一个时间值除以另一个时间,这样就可以执行此操作:

> td / timedelta (days=1)

但不是在Python 2中。

但是,timedelta有一个方法totalseconds,它返回以十进制秒表示的整个增量:

> td.total_seconds()
539100.0
> timedelta (days=1, microseconds=20).total_seconds()
86400.00002

这让我们可以采用上述解决方案来完成分数天的工作:

> td.total_seconds() / timedelta (days=1).total_seconds()
6.239583333333333

未解决的问题

如果你要将时差表示为微秒,分钟,小时等,你将不得不做更多的数学运算。

From agapow.net

答案 1 :(得分:1)

您可以使用默认的天()方法,该方法将返回天数。如果你想要的时间也是一天的格式。我希望下面的代码会有所帮助。

delta_days.total_seconds()/86400

days()类似, total_seconds()将以秒为单位返回差异,因此我将其除以一天中的秒数。

希望它有所帮助。

快乐编码:)