español php date time seconds

español - Convertir objeto DateInterval a segundos en php



php timestamp to seconds (3)

$datetime1 = date_create(''2009-10-11''); $datetime2 = date_create(''2009-10-13''); $interval = date_diff($datetime1, $datetime2);

¿Cómo puedo convertir el $interval encima de segundos en PHP


Hay un format función para esto. Pero no devolverá el número de segundos. Para obtener el número de segundos utilizas esta técnica.

$seconds = abs($datetime1->getTimestamp()-$datetime2->getTimestamp());

Si realmente quieres usar $interval , necesitas calcularlo.

$seconds = $interval->days*86400 + $interval->h*3600 + $interval->i*60 + $interval->s;

aquí

  • 86400 es el número de segundos en un día
  • 3600 es el número de segundos en una hora.
  • 60 es el número de segundos en un minuto

Otra forma de obtener el número de segundos en un intervalo es agregarlo a la fecha cero y obtener la marca de tiempo de esa fecha:

$seconds = date_create(''@0'')->add($interval)->getTimestamp();

Este método manejará los intervalos creados a través del Contructor DateInterval más o menos correctamente, mientras que la respuesta de shiplu ignorará años, meses y días para dichos intervalos. Sin embargo, la respuesta de shiplu es más precisa para los intervalos que se crearon al restar dos fechas. Para intervalos que consisten solo de horas, minutos y segundos, ambos métodos obtendrán la respuesta correcta.


Solo añadiría a la respuesta de shiplu:

function dateIntervalToSeconds($interval) { $seconds = $interval->days*86400 + $interval->h*3600 + $interval->i*60 + $interval->s; return $interval->invert == 1 ? $seconds*(-1) : $seconds; }

Para manejar los intervalos negativos.

Tenga en cuenta que, contrariamente a la respuesta de Brilliand, el código anterior considerará correctamente años, meses y fechas. Porque $ interval-> days es un valor absoluto ($ interval-> d es relativo al mes).

EDITAR: esta función aún no es correcta , como lo señaló @Brilliand. Un contra-ejemplo es

new DateInterval(''P4M3DT2H'');

No se maneja bien los meses.