用Python计算两个日期之间的时间差

3

我希望能够计算两个日期之间的差值。

比如说,我已经在文本框中输入了一个日期,其类型为String,就像下面这样:

type(waitForObject(":VWAP Calculator_LCDateTextField"), "07/24/14")

我用如下方法捕获日期
Current = (waitForObject(":VWAP Calculator_LCDateTextField").text)

现在,我想将捕获的日期与我的当前系统日期相减,并以天为单位得到差异。我尝试了很多方法,但都没有成功。请有人尽快帮助我。

附注:我有Python 2.4和2.7


你可以使用2.4或者2.7吗?还是你有偏好的版本?我想答案可能会因为使用不同版本而有所不同。 - TheSoundDefense
2
你应该查看datetime模块,特别是关于timedeltas的部分。你需要的是Python中内置的功能。 - g.d.d.c
3
如果您已尝试过一些方法,请在您的问题中包含这些信息。描述您尝试过什么以及它们失败的原因。参见http://stackoverflow.com/help/how-to-ask。 - Robᵩ
@TheSoundDefense: 当我遵循Alex的解决方案时,我遇到了"Detail TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'time.struct_time'"这个错误。 - Brother85
@eswar,听起来你正在获取当前时间的“time”对象,而不是“datetime”。它们都需要是“datetime”才能进行减法运算。 - TheSoundDefense
显示剩余2条评论
2个回答

5
尝试像这样:
>>> from datetime import datetime
>>> x = datetime.strptime("07/24/14", "%m/%d/%y")
>>> y = datetime.strptime("07/30/14", "%m/%d/%y")
>>> x-y
datetime.timedelta(-6)
>>> (x-y).days
-6

这里使用datetime.strptime方法将字符串转换为datetime对象。然后,您可以直接在datetime对象上进行算术运算。结果将是一个时间差(基本上是时间差异),如果您想要以天为单位获取差异,则可以调用.days。如果您想了解所有这些函数,请阅读此处的内容。
如果您想使用这些方法获取当前日期,只需简单地执行以下操作:
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2014, 7, 31, 12, 16, 12, 966428)

它会返回另一个日期时间对象,您可以在其上执行日期算术运算。

我想用文本框中输入的日期减去系统日期Alex。 - Brother85
@eswar,如果不将字符串转换为其他类型,你无法完成这个任务。Alex的答案提供了可能是最简单的方法。 - TheSoundDefense
@TheSoundDefense:我已将字符串转换为以下日期类型 Current = datetime.Parse(waitForObject(":VWAP Calculator_LCDateTextField").text) dt1 = (waitForObject(":VWAP Calculator_LCDateTextField").text)
entereddate =datetime.strftime(dt1, "%Y/%m/%d") 我该如何继续?
- Brother85
@eswar 获取当前的 datetime,如同 Alex 上面所展示的那样,然后减去并获取天数,就像他上面也展示的那样。 - TheSoundDefense
str(days) 将把整数转换为字符串。 - user2497586
显示剩余2条评论

0
  1. 将字符串解析为 datetime 对象(将字符串转换为datetime

  2. 相减两个 datetime 对象,你会得到一个 timedelta 对象,它有一个 days 属性

delta = dtend - dtstart
print delta.days

我已经尝试过这个: Current = datetime.Parse(waitForObject(":VWAP Calculator_LCDateTextField").text) dt1 = (waitForObject(":VWAP Calculator_LCDateTextField").text) entereddate =datetime.strftime(dt1, "%Y/%m/%d") - Brother85
我该从这里怎么继续? - Brother85

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接