básicamente, de esta manera:
echo date("H:i:s",$endtime-$starttime);
$endtime-$starttime
da la duración en segundos, date se utiliza para formatear la salida. Suena como que guardar y leer desde una base de datos no es tu problema aquí, así que lo dejé en mi ejemplo. Tenga en cuenta que tendrá que usar microtime(true)
para que funcione, con la salida separada de espacio de microtime()
no puede hacer cálculos tan fácil.
EDIT: que podría hacer todo el cálculo por su cuenta, también. Es matemática básica justa como esto:
$duration = $endtime-$starttime;
$hours = (int)($duration/60/60);
$minutes = (int)($duration/60)-$hours*60;
$seconds = (int)$duration-$hours*60*60-$minutes*60;
Su primera el ejemplo no siempre funcionará 'microtime' devuelve una marca de tiempo de unix, que obviamente comienza en 1/1/70 00:00:00 UTC. Si '$ endtime - $ starttime' es mayor que 24 horas, la marca de tiempo diff devuelta representaría 2/1/70 01:00:00 UTC (suponiendo que son exactamente 25 horas). Formatear esto como 'H: i: s' daría' 01: 00: 00', que parece ser de una hora. –
Además, podría valer la pena señalar en su segundo ejemplo que 'microtime()' devuelve una cadena de 'timestamp microsegundos' - no se pueden hacer cálculos matemáticos sobre esto, por lo que deberá usar' microtime (true) ' para obtener un flotador –
oh, gracias por la sugerencia de Adam, no he pensado en eso, pero tienes razón: si la duración pudiera ser de más de 24 horas, mi primera solución no funcionaría, habría que agregar "d" (y "m" e "Y" si es necesario) para generar el número de días o hacer el cálculo manualmente (como se muestra en mi segundo ejemplo) – oezi