Python: сравнение relativedelta
В текущей версии dateutil (2.6.0) разрешено сравнение двух объектов relativedelta. Кроме того, что это невозможно в принципе (что больше, relativedelta(days=30) или relativedelta(months=1) - зависит от того, какой взять месяц), полученный результат внезапно оказывается неоднозначным:
import dateutil from dateutil.relativedelta import relativedelta from datetime import date next_date = date(2016, 1, 1) birth_date = date(2010, 1, 1) give_before_months = 60 print 'dateutil.__version__', dateutil.__version__ print relativedelta(next_date, birth_date) print relativedelta(months=give_before_months) hren = 0 ok = 0 for i in xrange(10000): if relativedelta(next_date, birth_date) < relativedelta(months=give_before_months): hren += 1 else: ok += 1 print hren, ok print '-' * 10 a = relativedelta(next_date, birth_date) b = relativedelta(months=give_before_months) print a print b hren = 0 ok = 0 for i in xrange(10000): if a < b: hren += 1 else: ok += 1 print hren, ok
Вывод:
dateutil.__version__ 2.6.0 relativedelta(years=+6) relativedelta(years=+5) 5000 5000 ---------- relativedelta(years=+6) relativedelta(years=+5) 0 10000
Вместо этого нужно сравнивать даты:
birth_date + relativedelta(months=give_before_months) > next_date












