Задача: Произвести подсчет даты в увеличение, имея диапазон дат (вводимые с клавиатуры).
Используемая библиотека: желательно datetime, но если есть вариант лучше, то я не против.
В чем проблема?: код написанный мною может подсчитывать только в диапазоне не превышающий больше месяца.
Изначальный код:
def datplus(dat, post, ybil):
yearint = int(dat.year + 1)
monthint = int(dat.month + 1)
datint = int(dat.day + 1)
a = post.replace(day = 1)
b = ybil.replace(day = 1)
maxdays = b - a
mindays = int(dat.day) - 1
mindays += 1
if mindays == maxdays.days and dat.month == 12:
try:
yearplus = dat.replace(day = 1, month = 1, year = yearint)
except ValueError:
print("\nОшибка: Программа не может просчитать дату больше 2-х месяцев\nЗавершаю сессию...")
sys.exit()
else:
return yearplus
elif mindays == maxdays.days:
try:
monthplus = dat.replace(day = 1, month = monthint)
except ValueError:
print("\nОшибка: Программа не может просчитать дату больше 2-х месяцев\nЗавершаю сессию...")
sys.exit()
else:
return monthplus
else:
try:
datplus = dat.replace(day = datint)
except ValueError:
print("\nОшибка: Программа не может просчитать дату больше 2-х месяцев\nЗавершаю сессию...")
sys.exit()
else:
return datplus
Код выше представляет собой кастиль, который я сделал пока не решу проблему, но т.к. вы читаете этот пост, то понятно, что у меня так и не получилось.
На данный момент код немного изменен, и то что я сделал могло бы решить проблему, но я никак не могу избавить от
a = post.replace(day = 1)
, который не дает мне перейти на следующий месяц.
Часть измененного кода:
def datplus(dat, post, ybil):
yearint = int(dat.year + 1)
monthint = int(dat.month + 1)
datint = int(dat.day + 1)
a = post.replace(day = 1)
aint_month = int(a.month + 1)
aint_month_year = int(a.year + 1)
b = a.replace(month = aint_month)
maxdays = b - a
mindays = int(dat.day) - 1
mindays += 1
if mindays == maxdays.days:
a.replace(month = aint_month)
#выполняется только один раз, поэтому на следующий день 'а' снова равен post.replace(day = 1)
if mindays == maxdays.days and a.month == 12:
a.replace(month = aint_month, year = yearint)
b = a.replace(month = aint_month, year = yearint)
maxdays = b - a
mindays = int(dat.day) - 1
mindays += 1
#выполняется только один раз, поэтому на следующий день 'а' снова равен post.replace(day = 1)
# после if mindays == maxdays.days and dat.month == 12: ничего не менялось