Había por un ahí un chiste malo que dice algo como que si le preguntas a un abogado cuánto es dos mas dos, te pregunta ¿cuánto quieres que sea? Esta función calcula los meses que han pasado desde una fecha a otra, pero no meses como los mortales los conocemos, por ejemplo:
2016-12-16 a 2017-11-02 -- 10 meses 17 días 2017-03-18 a 2018-01-16 -- 9 meses 29 días 2017-04-16 a 2017-11-02 -- 6 meses 16 días 2017-09-30 a 2017-10-01 -- 0 meses 1 día
Es decir, los meses naturales entre dos fechas es fácil calcularlos con PHP usando la función DateDiff, sin embargo si vemos los meses que han pasado (diferencia relativa) entre esas dos mismas fechas, la cosa cambia:
2016-12-16 a 2017-11-02 -- 11 meses 2017-03-18 a 2018-01-16 -- 10 meses 2017-04-16 a 2017-11-02 -- 7 meses 2017-09-30 a 2017-10-01 -- 1 meses
Por tomar el último ejemplo, del 30 de septiembre al primero de octubre del mismo año sólo ha pasado 1 día y cero meses. Sin embargo, de septiembre a octubre ha pasado un mes... El código fuente del ejemplo se encuentra en mi github.
https://panchito-kardashian.tar.mx/media/2017/10/meses-entre-dos-fechas-con-php.png