21

我已经阅读了 RTFM 并在此处阅读了许多关于此的问题和答案,并且昨天很高兴使用 strftime 和 strptime,所以我发誓这应该可以工作,但它不是....

我只想要一个整数。不是“timedelta 对象”。不是“有意识但可散列的对象”(参见 I 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)

而且,这并不意味着我的增量线会起作用——请也看看那个。

4

2 回答 2

43

您想获取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()提取日期部分的调用(结果是一个实例);这使得处理差异略小于 24 小时的倍数的时间戳变得更容易。datetime.date

演示:

>>> 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'>
于 2013-04-23T13:36:40.707 回答
4
sign1['days'] = sign1['diff'] / np.timedelta64(1, 'D')

我遇到了同样的问题,并通过使用上述语句解决了。我希望它有所帮助。

于 2019-05-06T10:45:26.870 回答