cómo restar una fecha a otra usando php

Quiero restar una fecha a otra usando php y mostrar el resultado en el formato de días - horas - minutos - segundos. ¿Cómo hago esto usando php? Intenté esto usando la marca de tiempo pero no da los valores adecuados. por favor dar sugerencia

Por ejemplo: desde la fecha 2012-04-27 19:30:56 hasta la fecha 2012-04-27 19:37:56

utilicé este código

if(strtotime($history['datetimestamp']) > strtotime($lasttime)) {

                 $totalelapsed1 = (strtotime($history['datetimestamp'])-strtotime($lasttime)); 




                     if($totalelapsed1 > 60 ) {
                         $sec = $totalelapsed1%60;
                         $min = round($totalelapsed1/60 , 0);

                         $minute = $min + $minute;
                         $second = $sec + $second;

                        // echo $min. " min " .$sec." sec";

                     } else {
                         //echo "0 min " . $totalelapsed1." sec";

                         $minute = 0 + $minute;
                         $second = $totalelapsed1 + $second;

                    }



                } else {
                     $minute = 0 + $minute;
                     $second = 0 + $second;
                    // echo "0 min 0 sec";
                }

preguntado el 22 de mayo de 12 a las 11:05

[Consulte la publicación respondida en este hilo][1] [1]: stackoverflow.com/questions/676824/… -

4 Respuestas

Desde cómo restar dos fechas y horas para obtener la diferencia by VolkerK:

Tienes que usar así: -

<?php

//$now = new DateTime(); // current date/time
$now = new DateTime("2010-07-28 01:11:50");
$ref = new DateTime("2010-07-30 05:56:40");
$diff = $now->diff($ref);
printf('%d days, %d hours, %d minutes', $diff->d, $diff->h, $diff->i);
prints 2 days, 4 hours, 44 minutes

ver http://docs.php.net/datetime.diff

editar: Pero también podría trasladar el problema más al lado de la base de datos, por ejemplo, almacenando la fecha/hora de vencimiento en la tabla y luego haciendo una consulta como... WHERE key='7gedufgweufg' AND expires<Now() Muchos rdbms tienen un soporte razonable / bueno para la aritmética de fecha / hora.

URL del enlace:- cómo restar dos fechas y horas para obtener la diferencia

http://www.webpronews.com/calculating-the-difference-between-two-dates-using-php-2005-11

contestado el 23 de mayo de 17 a las 13:05

Mucho más rápido que hacerlo manualmente y justo lo que necesitaba, ¡gracias! - Blazonix

Si cambia el año/mes, esto solo mostrará "2 días, 4 horas, 44 minutos", no cuenta los meses. michel ayres

No importa... hay un parámetro que no vi. ->days que muestran todos los días en el intervalo - michel ayres

Sugiero usar objetos DateTime y DateInterval.

$date1 = new DateTime("2007-03-24");
$date2 = new DateTime("2009-06-26");
$interval = $date1->diff($date2);
echo "days difference ".$interval->d." days "; 

leer más php DateTime::diff manual

contestado el 22 de mayo de 12 a las 11:05

Intenta usar fecha y hora: diferencia ().

En esa página se proporcionan ejemplos.

contestado el 22 de mayo de 12 a las 11:05

Este script resuelve mi problema

$date1 = date("d-m-Y H:i:s",strtotime($date1));

$date2 = date("d-m-Y H:i:s",strtotime($lasttime));

$diff = abs(strtotime($date2) - strtotime($date1));

$years   = floor($diff / (365*60*60*24));  $months  = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));  $days    = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

$hours = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24)/ (60*60));  $minuts  = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60)/ 60);  $seconds = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60 - $minuts*60)); 

printf("%d years, %d months, %d days, %d hours, %d minuts\n, %d seconds\n", $years, $months, $days, $hours, $minuts, $seconds);

respondido 13 mar '15, 15:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.