Недавно я сделал нечто очень похожее, используя Boost.Date_Time и представив получившуюся функцию как C, но для этого, конечно, требуется использовать компоновщик C ++.
На самом деле, пример оставляет желать лучшего - будут ли даты начала и окончания всегда в один и тот же день месяца? Если это так, вы можете проигнорировать номер дня, в итоге получится тривиальное вычитание чисел месяца и года.
Однако, если ваши даты могут быть где угодно в месяце, это может быть немного сложнее. Помните, что не все месяцы имеют одинаковое количество дней!
C difftime не помогает вам в месячных расчетах, поэтому я использовал Boost, хотя у вас может не быть такой опции.