Cómo calcular la diferencia entre dos fechas en PHP

Ayer me encontraba trabajando para un cliente Peruano que contrató mi servicio freelance de desarrollo de software php y mysql y me surgió la necesidad de calcular la cantidad de días entre dos fechas.

El proyecto es la puesta en funcionamiento de una tienda virtual para venta de productos on-line y necesitaba imprimir en pantalla la cantidad de días durante los cuales continuaría en vigencia una determinada oferta (antes de llegar a la fecha de expiración de la oferta).

Comparto a continuación la sentencia que utilicé:

$fecha="2012-02-14 00:00:00";$segundos=strtotime($fecha) - strtotime('now');$diferencia_dias=intval($segundos/60/60/24);echo "La cantidad de días entre el ".$fecha." y hoy es <b>".$diferencia_dias."</b>";

El resultado de éste código puedes verlo en el siguiente link:
http://www.blogdephp.com/resultados-codigos-fuentes-php/calcular-diferencia-entre-dos-fechas-datatime-strtotime.php

Revisemos cómo funciona éste código. En las tablas mysql, si tu campo es de tipo DATETIME, vas a tener las fechas con el siguiente formato “2012-02-14 00:00:00”. Si tratas de restar dos fechas directamente en ese formato, verás que no es posible. Por tal motivo, es necesario transformar esos valores DATETIME en valores numéricos (valores que se puedan restar).

Para esto utilizamos la función strtotime($fecha) que nos devuelve la cantidad de segundos transcurridos entre el día 1 de Enero de 1970 y el parámetro $fecha. Yo a $fecha le pasé un valor constante para que el ejemplo sea entendible, pero en realidad tendríamos que consultar éste valor desde una tabla mysql en forma dinámica.

Luego, la función strtotime(‘now’) trabaja de manera similar pero calcula los segundos transcurridos entre el 1 de Enero de 1970 y hoy.

El resultado de la resta nos queda expresado en la unidad de tiempo “segundos”, al dividir por 60 nos queda expresado en “minutos”, al dividir nuevamente por 60 nos queda en “horas” y al dividir por 24 nos queda en días 🙂

Importante: el horario del servidor no siempre es el mismo que en tu computadora local, atención cuando utilizas la función strtotime(‘now’).

Explicaciones técnicas de éste tipo muchas veces son más fácil de comprender cuando conversamos (con preguntas y respuestas en VIVO). Ahora tienes disponible el servicio de clases grupales de PHP y Mysql a través video conferencia (skype).

Coméntalo a tus compañeros y directivos de la Universidad (o centro educativo) y coordinamos una clase en Skype abordando los temas de PHP en los cuales requieran capacitación :). Si se juntan entre muchos compañeros y comparten los gastos, es verdaderamente muy accesible el servicio.

Si el artículo te pareció interesante y piensas que puede ayudar a muchos otros programadores, por favor compártelo en Facebook y Twitter. ¡Aquí abajo tienes los botones!

Hosting

Te recomendamos...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *