> Faqs > Calcular la diferencia de dias entre dos fechas en PHP

Calcular la diferencia de dias entre dos fechas en PHP

Hola buenos días, Estoy intentando que un campo de una tabla de el resultado de la direncia entre dosfechas, fechaEnvio y fechaActual. El código es el siguiente:

<?php
    $datetime1 = date_create($fechaActual);
    $datetime2 = date_create($fechaEnvio);
?>
$contador = date_diff($datetime1, $datetime2);
$differenceFormat = '%a';
echo $contador->format($differenceFormat);

Gracias de antemano

Lo relevante para esta pregunta sería indicar el código de tu función date_diff(), así como el formato de las fechas de inicio y de fin. El marcado HTML que tienes es indiferente para la resolución de tu duda. He podido calcular la diferencia de días y que se muestre en al tabla. Gracias

Respuestas

Para trabajar con fechas en PHP existe una librería muy útil llamada Carbon. https://carbon.nesbot.com/docs/

Esa librería incluye multitud de operaciones con fechas, entre las que encuentras por supuesto la diferencia entre días de dos fechas.

Suponiendo que las fechas las tengas en "formato MySQL", algo como 2019-10-15. Tendrias que hacer lo siguiente:

$currentDate = Carbon::createFromFormat('Y-m-d', $fechaActual);
$shippingDate = Carbon::createFromFormat('Y-m-d', $fechaEnvio);

$diferencia_en_dias = $currentDate->diffInDays($shippingDate);

No sé qué fecha le quieres restar a qué otra. Igual tu operación es al contrario. Aunque esto ya es un problema menor.

$diferencia_en_dias = $shippingDate->diffInDays($currentDate);

Ya dependiendo del formato que tengas en tu fecha la generación de los objetos Carbon puede cambiar, pero ahí es solamente consultar la documentación de la librería.

Julian
1147 49 87 46
Hola Julián, gracias por la aportación. Lo he resuelto de la siguiente forma Se trataba de sacar la diferencia entre la facha actual y la fecha de envío en días. Para saber cuantos días tarda un documento en llegar desde que se envía hasta la fecha actual, por lo que cada día ese cambia. Gracias.

Aquí está el código con el que he resuelto la duda. Se trataba de sacar la diferencia en días desde la fecha de envío y la fecha actual, que cambia diariamente.

<?php
  $fechaActual = date('Y-m-d'); 
  $datetime1 = date_create($fechaEnvio);
  $datetime2 = date_create($fechaActual);
  $contador = date_diff($datetime1, $datetime2);
  $differenceFormat = '%a';
  echo $contador->format($differenceFormat);
?>  
Monica
13 1 4
Será que podrían hacer una página html, donde haya un input para colocar la fecha con un type = "date" y un botón submit para enviar la fecha dada, y un codigo .php que procese y muestre en pantalla la diferencia entre las dos fechas.

Otra posible forma de hacer este cálculo, con funciones de la biblioteca de PHP se ha publicado en este artíclo: Calcular la distancia en días entre dos fechas en PHP.

Miguel Angel
3295 146 215 17
Me pregunto, yo soy un novato en esto, cómo captura el código php la fecha enviada desde una página .html, si la envío con el método post al archivo .php, en que parte del código php me captura la fecha enviada y cómo me muestra?. Lo que es recibir los valores de los formularios lo ves en https://desarrolloweb.com/articulos/318.php soy principiante como puedo obtener dos fechas de mysql para posteriormente compararlas y que aparezcan botones de alerta