9

如何从相同 YYYYMMDD 格式的 20110531 之类的字符串计算第二天?在这种特殊情况下,我希望得到 20110601 作为结果。以静态方式计算“明天”或第二天并不难,像这样:

>>> from datetime import date, timedelta
>>> (date.today() + timedelta(1)).strftime('%Y%m%d')
'20110512'
>>>
>>> (date(2011,05,31) + timedelta(1)).strftime('%Y%m%d')
'20110601'

但是我怎样才能使用一个字符串dt = "20110531"来获得与上面相同的结果呢?

4

3 回答 3

11

以下是如何执行此操作的示例:

import time
from datetime import date, timedelta

t=time.strptime('20110531','%Y%m%d')
newdate=date(t.tm_year,t.tm_mon,t.tm_mday)+timedelta(1)
print newdate.strftime('%Y%m%d')
于 2011-05-11T12:18:18.280 回答
4
>>> from datetime import datetime
>>> print datetime.strptime('20110531', '%Y%m%d')
2011-05-31 00:00:00

然后按照您在问题中显示的那样对该日期对象进行数学运算。

日期时间库文档。

于 2011-05-11T12:03:12.183 回答
3

你是大多数人的方式!除了strftime将日期转换为格式化字符串的函数外,还有一个strptime以另一种方式转换回来的函数。

要解决您的问题,您只需替换date.today()strptime(yourDateString, '%Y%m%d').

ED:当然,您还必须添加strptimefrom datetime import行尾。

于 2011-05-11T12:03:54.390 回答