【问题标题】:Integer difference in python between two dates两个日期之间python的整数差
【发布时间】:2013-04-16 17:59:27
【问题描述】:

我已经阅读了 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)

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

【问题讨论】:

  • datetime.datetime.strptime
  • 部分功劳。 delta line 的下一个错误命中:pmain.py:6: TypeError: 'member_descriptor' object is not callable

标签: python date datetime


【解决方案1】:

您想获取 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() 的调用以提取just 日期部分(结果是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'>

【讨论】:

  • Perfet,Martijn - 您一如既往地回答和解释,并通过您的回答使未来的编码人员受益。现在快乐快乐的代码 - 非常感谢!
  • 如果 OP 想要四舍五入到最近的一整天,最好也检查秒数。
  • 变量delta的类型是int吗?
  • @George:添加了验证,它确实是 int,只为你。
  • @Aya:是的,但不是在这里,因为默认的datetime 对象是时区天真的(根本没有时区信息,所以也没有 DST 和时区更改)。 :-)
【解决方案2】:
sign1['days'] = sign1['diff'] / np.timedelta64(1, 'D')

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2011-06-06
    相关资源
    最近更新 更多