输入错误比较两个日期时间

时间:2013-05-13 17:22:45

标签: python datetime python-2.7

我的问题看起来很常见,但我没有在网站上找到答案。 我想在python中结合两个日期,我用它:

delta = 2012-04-07 18:54:40  - 2012-04-07 18:54:39

但是我收到一个错误: TypeError: unsupported operand type(s) for -: 'str' and 'str'

我理解,但我不知道如何以正确的方式改变它。

你有什么想法吗?

THKS!

3 个答案:

答案 0 :(得分:4)

您正在减去strings,而不是datetime.datetime个对象。尝试使用strptime方法将字符串转换为datetime.datetime

>>> delta = datetime.datetime.strptime('2012-04-07 18:54:40', '%Y-%m-%d %H:%M:%S') \
            - datetime.datetime.strptime('2012-04-07 18:54:39', '%Y-%m-%d %H:%M:%S')
>>> delta
datetime.timedelta(0, 1)

答案 1 :(得分:1)

让他们成为日期时间!

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2013, 5, 13, 10, 25, 6, 20914)
>>> datetime.datetime(2013, 5, 13, 10, 25, 6, 20914)
datetime.datetime(2013, 5, 13, 10, 25, 6, 20914)
>>> datetime.datetime(2013, 5, 13, 10, 25, 6, 20914) - datetime.datetime(2013, 5, 13, 10, 14, 6, 20914)
datetime.timedelta(0, 660)
>>> 

答案 2 :(得分:0)

如果你想用日期时间来计算,你首先要解析你得到的日期字符串。

如上所述,一种可能性是非常重要的。您也可以使用python-dateutil

import dateutil.parser
dateutil.parser.parse("2012-04-07 18:54:40") - dateutil.parser.parse("2012-04-07 18:54:39")

# datetime.timedelta(0, 1)

更容易使用。此外,dateutil中的日期处理还有很多其他有用的东西。