两个日期之间python的整数差异

时间:2013-04-23 13:33:52

标签: python date datetime

我已经在RTFM上阅读了很多有关此问题的问题和答案,昨天很高兴使用strftime和strptime,所以我发誓这应该有用,但事实并非......

我只想要一个整数。不是“timedelta对象”。不是“知道但可以清洗的对象”(参见我的RTFM)。不是一个元组。不是字典。只是一个简单的怪异整数,所以我可以使用if语句和分支,并开心。请带上你的智慧之光,谢谢。

这就是我所拥有的

...
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)

这是我得到的:

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

而且,这并不意味着我的三角洲线将起作用 - 请看一下。

2 个答案:

答案 0 :(得分:26)

您希望获得 classmethod datetime.datetime.strptime(),然后从生成的timedelta中获取.days 属性

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小时的倍数。

演示:

>>> 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'>

答案 1 :(得分:0)

sign1['days'] = sign1['diff'] / np.timedelta64(1, 'D')

我遇到了同样的问题,并且通过引用上面的陈述解决了。 希望对您有所帮助。