从“YYYYMMDD”格式字符串计算下一天

9 投票
3 回答
12607 浏览
提问于 2025-04-16 17:26

我该如何从一个像20110531这样的字符串计算出下一天,并保持同样的YYYYMMDD格式呢?在这个例子中,我希望得到的结果是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"这样的字符串来得到和上面一样的结果呢?

3 个回答

3

你已经快成功了!除了有一个叫 strftime 的函数可以把日期转换成格式化的字符串外,还有一个 strptime 的函数可以把字符串转换回日期。

要解决你的问题,你只需要把 date.today() 替换成 strptime(yourDateString, '%Y%m%d') 就可以了。

补充说明:当然,你还需要在 from datetime import 的那一行后面加上 strptime

4
>>> from datetime import datetime
>>> print datetime.strptime('20110531', '%Y%m%d')
2011-05-31 00:00:00

然后就可以对这个日期对象进行数学运算,就像你在问题中展示的那样。

这是关于日期时间库的文档。

12

这里有一个示例,教你怎么做:

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')

撰写回答