Я предполагаю, что вы используете это для сравнения значений даты и времени. Для этого используйте объекты timedelta вместо повторного включения колеса.
Пример:
>>> from datetime import timedelta
>>> from datetime import datetime as dt
>>> d = dt.now()
>>> year = timedelta(days=365)
>>> tomorrow = d + timedelta(days=1)
>>> tomorrow + year > d + year
True
Если по какой-то причине вам действительно нужно десятичных лет, datetime
объектный метод strftime()
может дать вам целочисленное представление дня года , если вас спросят %j
- если это то, что вы ищете, см. ниже простой пример (только для разрешения на 1 день):
>>> from datetime import datetime
>>> d = datetime(2007, 4, 14, 11, 42, 50)
>>> (float(d.strftime("%j"))-1) / 366 + float(d.strftime("%Y"))
2007.2814207650274