从“YYYYMMDD”格式字符串计算下一天
我该如何从一个像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')