Посчитать разницу месяцев

Думаю все кто когда-то писал архив сталкивался с интересной задачей: посчитать количество месяцев от события №1 до события №2. Найти разницу в дате кажется просто, но мозг надо на секундочку включить. 

Общий алгоритм для разницы в месяцах таков:

|месяц_начало - месяц_сейчас+12*(год_сейчас-год_начало)|

Пример:
сентябрь - январь+12*(2010 - 2011) = 9 - 1+12 = 9 - 13 = -4
март - февраль+12*(2009 - 2011) = 4 - 3+12*2 = 4 - 27 = -23

Результат нужно брать по модулю.
Если нужно посчитать с текущим месяцем включительно, то в конце выражения надо добавить +1:

|месяц_начало - месяц_сейчас+12*(год_сейчас-год_начало)+1|

Если надо исключить первый месяц, то добавить -1, соответственно.
Мои PET-проекты
Матч Шредингера. Про футбол без спойлеров. Сервис помогает выбрать интересный матч для просмотра в записе. Перейти »
MafiozZz. Сервис для тех, кто любит играть в мафию. Сервис дает клубам возможность завести клубный сайт, предоставляет удобный интерфейс для ведения подобной статистики, расписания игр, выдавать игрокам награды, проводь адресную SMS рассылку (и прочие плюшки). Перейти »