我有以下代码,我想得到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
。
如何获得要求?
答案 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
如果你要将时差表示为微秒,分钟,小时等,你将不得不做更多的数学运算。
答案 1 :(得分:1)
您可以使用默认的天()方法,该方法将返回天数。如果你想要的时间也是一天的格式。我希望下面的代码会有所帮助。
delta_days.total_seconds()/86400
与 days()类似, total_seconds()将以秒为单位返回差异,因此我将其除以一天中的秒数。
希望它有所帮助。快乐编码:)