вычисление следующего дня из строки в формате «ГГГГММДД» - PullRequest
9 голосов
/ 11 мая 2011

Как рассчитать следующий день из строки, например 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", чтобы получить тот же результат, что и выше?

Ответы [ 3 ]

11 голосов
/ 11 мая 2011

Вот пример того, как это сделать:

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')
4 голосов
/ 11 мая 2011
>>> from datetime import datetime
>>> print datetime.strptime('20110531', '%Y%m%d')
2011-05-31 00:00:00

А затем сделайте математику для этого объекта даты, как показано в вашем вопросе.

Документы библиотеки времени и даты.

3 голосов
/ 11 мая 2011

Вы большую часть пути туда! наряду с функцией strftime, которая преобразует дату в форматированную строку, есть также функция strptime, которая преобразует обратно другим способом.

Чтобы решить вашу проблему, вы можете просто заменить date.today() на strptime(yourDateString, '%Y%m%d').

ED : и, конечно, вам также придется добавить strptime в конец вашей строки from datetime import.

...