Как вы сравниваете даты? Если вы используете функции datetime
, то это уже должно учитывать такие вещи.
>>> datetime.datetime(2011, 2, 28)
datetime.datetime(2011, 2, 28, 0, 0)
>>> datetime.datetime(2011, 2, 29)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: day is out of range for month
>>> datetime.datetime(1600, 2, 29)
datetime.datetime(1600, 2, 29, 0, 0)
datetime.timedelta()
используется для представления разницы между двумя датами
>>> datetime.datetime(2011, 2, 28) + datetime.timedelta(days=10)
datetime.datetime(2011, 3, 10, 0, 0)
>>> datetime.datetime(1600, 2, 28) + datetime.timedelta(days=10)
datetime.datetime(1600, 3, 9, 0, 0)
>>> datetime.datetime(2011, 2, 28) - datetime.datetime(2011, 4, 10)
datetime.timedelta(-41)
Не знаю, как это вписывается в ваш код, но это может быть вариант; -)