[Pregunta]: Manipular dos timestamp

Iniciado por Leguim, 4 Agosto 2019, 04:30 AM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Buenas noches...
Quisiera restar dos timestamp o ver mejor dicho si esto es posible...
Mi código me esta dando errores vendría siendo este:

Código (php) [Seleccionar]

$timestamp_now = date('Y-m-d H:i:s');
$timestamp_old = '2019-08-03 23:22:50';
$timestamp_res = $timestamp_now - $timestamp_old;

echo $timestamp_res.' = '.$timestamp_now.' - '.$timestamp_old;


Explicando... estoy restando el timestamp actual por uno cualquiera más antiguo... y que este me cree un nuevo timestamp basado en el resultado de esa operación...
No se muy bien si esto es posible...

Gracias!...

EdePC

Saludos,

- No creo que te sea posible obtener siempre una DateTime válido a partir de la Diferencia de dos DateTime, supongamos que quieres saber la Diff entre la fecha de Mañana y de Hoy:

'2019-08-05 09:53:00' - '2019-08-04 09:53:00'

-- Según tu planteamiento quisieras obtener un DateTime válido de este resultado:

'0000-00-01 00:00:00'

-- Pero esto no es un formato DateTime válido, ya que no existe un mes 00 (empieza en enero->01), por esto en PHP a este tipo de resultados los llama DateInterval que es un Objeto que especifica un número de años, meses, días, horas, minutos, segundos, etc.

- Claro que puedes trabajar con el DateInterval y crear un String con el formato '0000-00-01 00:00:00', pero no pasa de ser un String que nunca llegará a ser un DateTime válido.

MinusFour

Restar dos timestamps significa que vas a obtener el número de segundos entre los dos timestamps. Ese número de segundos lo puedes usar para construir una fecha, pero será la fecha con los segundos añadidos al epoch time (00:00:00 Thursday, 1 January 1970). Dudo mucho que eso sea lo que tu quieres. De todas formas lo que tu tienes ahí no son timestamps son fechas en formato de string.

@XSStringManolo

Haz una funcion para pasar de Años, meses, dias, horas, minutos y segundos a segundos.

Segundos += (minutos*60) + (horas*3600) + (dias...)

Si se te excede del tamaño máximo que puedes tratar como entero, trátalo como texto para almacenarlo y haz una función para operar cifra por cifra independientemente y vas añadiendo el resultado al principio del string sumándole lo que lleves de la operación final.

Así obtienes los segundos de diferencia entre una fecha y otra y desde ahí ya puedes obtener ese valor para tratarlo como quieras. Crear una fecha a partir de la original, o simplemente ir dividiendo para tener algo rollo:
827282927291 segundos o:
0 años 4 meses 13 dias 23horas 58 minutos 31 segundos.
Fecha de referencia: 2019 años 5 meses 3 dias 0horas 1minuto 10 segundos.

Fecha de tiempo transcurrido desde año 0: 2019 años 9 meses 16 dias ...

Guardas cada valor como elemento de un array junto con los símbolos como elementos e imprimes el array.
Fecha actual: 2019-Sept-16 23:58:31