Я бы предложил следующий простой подход для конвертации:
from datetime import datetime, timedelta
s = "20120213"
# you could also import date instead of datetime and use that.
date = datetime(year=int(s[0:4]), month=int(s[4:6]), day=int(s[6:8]))
Для сложения / вычитания произвольного количества дней (слишком много секунд), вы можете сделать следующее:
date += timedelta(days=10)
date -= timedelta(days=5)
И преобразовать обратно, используя:
s = date.strftime("%Y%m%d")
Чтобы безопасно преобразовать целое число в строку, используйте:
s = "{0:-08d}".format(i)
Это гарантирует, что длина вашей строки составляет восемь символов, а слева -дополнены нулями, даже если год меньше 1000 (хотя отрицательные годы могут стать смешными).
Дополнительная справка: объекты datetime , объекты timedelta