Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Я написал верную, с точки зрения моих требований, функцию
И в этих точках функция должна возвращать не противоречащее житейской логике значение.
3. Срок, исчисляемый месяцами, истекает в соответствующее число последнего месяца срока.
<...>
Если окончание срока, исчисляемого месяцами, приходится на такой месяц, в котором нет соответствующего числа, то срок истекает в последний день этого месяца.
Как знает всякий, кто работал с датами, интервалы минута, час, день и даже неделя не доставляют особых хлопот.
DeviceTimeExactMonthsBetween скорее всего должна быть real.StartMonths:=(y1-BASE_YEAR)*12+m1+d1/d1max;
EndMonths:=(y2-BASE_YEAR)*12+m2+d2/d2max;,
Много тестов не бывает