两个日期之间的python整数差

Integer difference in python between two dates

我已经通过RTFM阅读了很多关于这方面的问题和答案,昨天我很高兴地使用了strftime和strptime,所以我发誓这应该有效,但事实并非如此。

我只想要一个整数。不是"TimeDelta对象"。不是"可识别但可哈希的对象"(请参阅,i rtfm)。不是一个元组。不是字典。只是一个简单的反常整数,这样我就可以使用if语句和分支,并感到高兴。请把你的智慧之光带到这上面,谢谢。

这是我的东西

1
2
3
4
5
6
7
...
import datetime
mdate ="2010-10-05"
rdate ="2010-10-05"
mdate1 = datetime.strptime(mdate,"%Y-%m-%d")
rdate1 = datetime.strptime(rdate,"%Y-%m-%d")
delta =  datetime.timedelta.days(mdate1 - rdate1)

我得到的是:

1
2
pmain.py:4: AttributeError: 'module' object has no attribute 'strptime'
(error hits in the 'mdate1..." line above)

而且,这并不意味着我的三角洲线会起作用——请看那个。


您需要获取classmethod datetime.datetime.strptime(),然后从生成的timedelta中获取.days属性:

1
2
3
4
5
6
7
import datetime

mdate ="2010-10-05"
rdate ="2010-10-05"
mdate1 = datetime.datetime.strptime(mdate,"%Y-%m-%d").date()
rdate1 = datetime.datetime.strptime(rdate,"%Y-%m-%d").date()
delta =  (mdate1 - rdate1).days

所以你有了datetime模块,它有一个datetime.datetime类,而这个类又有一个datetime.datetime.strptime()方法。我还添加了对.date()的调用,只提取日期部分(结果是datetime.date实例);这使得处理时间戳的难度略小于24小时的倍数。

演示:

1
2
3
4
5
6
7
8
9
10
>>> import datetime
>>> mdate ="2010-10-05"
>>> rdate ="2010-10-05"
>>> mdate1 = datetime.datetime.strptime(mdate,"%Y-%m-%d").date()
>>> rdate1 = datetime.datetime.strptime(rdate,"%Y-%m-%d").date()
>>> delta =  (mdate1 - rdate1).days
>>> print delta
0
>>> type(delta)
<type 'int'>