我的问题对你来说很常见,但我没有在网站上找到答案。我想在 python 中结合两个日期,我用这个:
delta = 2012-04-07 18:54:40 - 2012-04-07 18:54:39
但我得到一个错误:
TypeError: unsupported operand type(s) for -: 'str' and 'str'
我理解它,但我不知道如何以正确的方式转动它。
你有想法吗?
谢谢!
我的问题对你来说很常见,但我没有在网站上找到答案。我想在 python 中结合两个日期,我用这个:
delta = 2012-04-07 18:54:40 - 2012-04-07 18:54:39
但我得到一个错误:
TypeError: unsupported operand type(s) for -: 'str' and 'str'
我理解它,但我不知道如何以正确的方式转动它。
你有想法吗?
谢谢!
您是在减去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)
让他们约会!
>>> 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)
>>>
如果你想用日期时间计算,你首先必须解析你得到的日期字符串。
如前所述,一种可能性是 strptime。您还可以使用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 中还有很多其他有用的日期处理功能。