Python以分钟为单位减去两个日期

时间:2012-10-17 01:33:58

标签: python

date1 = datetime.datetime(2012, 10, 10, 10, 15, 44)
date2 = datetime.datetime(2012, 10, 17, 8, 45, 38)
roundedA = date2.replace(second = 0, microsecond = 0)
print roundedA
roundedB = date1.replace(second = 0, microsecond = 0)
print roundedB
minutes = (roundedA - roundedB).min
print minutes

结果是:

-999999999 days, 0:00:00

我想计算2个不同的日期差异。我在上面减去了,但它没有给我我想要的东西。如何减去两个日期并在几分钟或几小时内得到结果。

2 个答案:

答案 0 :(得分:5)

timedelta.min属性不代表分钟 - 它表示可能的最小时间值(参见here)。如果你想在几分钟内得到它,你可以这样做:

d = roundedA - roundedB
minutes = d.days * 1440 + d.seconds / 60

这是因为timedelta内部只存储了秒和天。

答案 1 :(得分:1)

你也可以使用时间模块在几秒钟内得到减法结果:

import time
import datetime
date1 = datetime.datetime(2012, 10, 10, 10, 15, 44)
date2 = datetime.datetime(2012, 10, 17, 8, 45, 38)
var1 = time.mktime(date1.timetuple())
var2 = time.mktime(date2.timetuple())
result_in_seconds = var2 - var1

>>> var2 - var1
599394.0

或使用answer

中提供的功能
>>> def days_hours_minutes(td):
...     return td.days, td.seconds//3600, (td.seconds//60)%60
... 
>>> date2 - date1
datetime.timedelta(6, 80994)
>>> days_hours_minutes(datetime.timedelta(6, 80994))
(6, 22, 29)