Error diferencia entre fechas Datetime::diff() php

Error diferencia entre fechas Datetime::diff() php

No hay comentarios en Error diferencia entre fechas Datetime::diff() php

phpAl utilizar la función diff() del objeto Datetime en PHP me surgía un error con los meses que no tenían 30 días, en mi caso particular calculando una diferencia extra de un mes más.

Tras investigar el problema he encontrado el bug y la solución al problema en mi caso particular trataba de buscar la diferencia en meses entre dos fechas sin indicar la hora y la solución es tan simple como indicar en la fecha una hora cualquiera siempre y cuando sea mayor a 2, es decir, con los siguientes ejemplos el cálculo es incorrecto: «2013-05-31», «2013-05-31 01:00:00», sin embargo, como he dicho indicando una hora superior a 2 sin funciona, es decir, para que el cálculo sea correcto: «2013-05-31 02:00:00», «2013-05-31 12:00:00».

Aquí puedes ver el ejemplo completo:


//Ejemplo con resultado incorrecto
$datetimei = new DateTime("2013-04-15");
$datetimef = new DateTime("2013-05-31");
$intervalo = $datetimef->diff($datetimei);
$cmeses = $intervalo->m;
echo "La diferencia en meses es: ".$cmeses;

//Resultado 2 meses

//Ejemplo con resultado correcto
$datetimei = new DateTime("2013-04-15 12:00:00");
$datetimef = new DateTime("2013-05-31 12:00:00");
$intervalo = $datetimef->diff($datetimei);
$cmeses = $intervalo->m;
echo "La diferencia en meses es: ".$cmeses;

//Resultado 1 mes

Sobre el autor

Ingeniero informático especializado en programación web, dedicado al diseño de páginas web, tiendas online, aplicaciones a medida. Trabajo con PHP, MySQL, Javascript, Jquery, Bootstrap, HTML, CSS, Prestashop y Wordpress.

Etiquetas:

Entradas relacionadas

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Sígueme en

Volver arriba