¿Cómo saber el número de meses entre dos fechas en PHP?

En las últimas semanas he trabajado en un proyecto donde hacemos uso del cálculo de fechas. Como ya han de deducir, uno de esos cálculos está relacionado a la redacción de esta entrada.

Pues bien, es algo sencillo. Primero tendremos que declarar nuestras dos fechas como un tipo de dato DateTime:

$fechainicial = new DateTime('2012-01-01');

$fechafinal = new DateTime('2013-01-01');

Ahora usaremos el método diff que poseen los objetos DateTime para saber la diferencia de tiempo entre nuestras dos fechas:

$diferencia = $fechainicial->diff($fechafinal);

El método diff nos devuelve un objeto del tipo DateInterval, que almacena la información sobre la diferencia de tiempo entre fechas (años, meses, días, etc.).

Bueno, para calcular los meses tendremos que multiplicar el atributo “y” por 12 (número de meses que contiene un año). Luego le sumamos el valor que hay en el atributo “m“, quien contiene el número de meses en nuestro intervalo de tiempo.

$meses = ( $diferencia->y * 12 ) + $diferencia->m;

Y listo, si hacemos la impresión de nuestra variable $meses, debe aparecer el número 12.