我的问题看起来很常见,但我没有在网站上找到答案。 我想在python中结合两个日期,我用它:
delta = 2012-04-07 18:54:40 - 2012-04-07 18:54:39
但是我收到一个错误:
TypeError: unsupported operand type(s) for -: 'str' and 'str'
我理解,但我不知道如何以正确的方式改变它。
你有什么想法吗?
THKS!
答案 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中的日期处理还有很多其他有用的东西。