¿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.

Anuncios

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

  1. Es importante recalcar que si bien esta función de tan sólo 4 líneas es lo más simple que he visto para determinar los meses entre fecha y fecha, sin embargo sólo funciona para PHP 5.3 en adelante. =(

  2. Estimado:

    Como puedo saber los meses entre dos fechas y separar los dias de acuerdo a esos meses.

    Me explico

    Quiero saber los meses entre el 28-01-2014 y el 04-03-2014.. la respuesta que necesito es: 1 (enero) 2(febrero) y 3(marzo). 1, 2 y 3, es decir el numero que corresponde a cada mes.
    Tambien necesito que una vez teniendo los meses (1, 2 y 3) que me calcule los dias para cada mes, es decir 4 dias de enero, 28 dias de febrero y 4 dias de marzo. Lo necesito porque quiero multiplicar los dias por un factor que cambia segun el mes.

    Esperando que puedas ayudarme

    • Rodrigo yo tambien ando buscando una funcion que realice una matriz de los meses y cuantos dias hay en cada mes. has encontrado una solucion? gracias de antemano,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s