Foros del Web » Programando para Internet » PHP »

Restar fecha actual con fecha de base de datos y comparar resultado en segundos

Estas en el tema de Restar fecha actual con fecha de base de datos y comparar resultado en segundos en el foro de PHP en Foros del Web. Hola, hace tanto q no manejo fechas en php que ya me olvide. Yo tengo dos fecha con el siguiente formato: "Y-m-d H:i:s" Asi me ...
  #1 (permalink)  
Antiguo 20/03/2014, 08:43
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Restar fecha actual con fecha de base de datos y comparar resultado en segundos

Hola,

hace tanto q no manejo fechas en php que ya me olvide.

Yo tengo dos fecha con el siguiente formato: "Y-m-d H:i:s"


Asi me devuelve los datos:
Código PHP:

$fechaActual 
date("Y-m-d H:i:s");
$fechaBaseDeDatos '2014-02-14 13:15:05';
$resultado $fechaActual $fechaBaseDeDatos
Quiero restar esas dos fechas y el $resultado pasarlo a segundos para compararlo con una variable q está en segundos, pero está en segundos "comunes", no con strtotime.


Y luego hacer:
Código PHP:

$resultado 
//resultado en segundos;
$variableEnSegundos '86400'//86400 segundos equivalen a 1 día

if($resultado $variableEnSegundos){
      
//algo
}else{
     
//algo

El tema es como paso a segundos...

Alguna ayuda?

Gracias
  #2 (permalink)  
Antiguo 20/03/2014, 08:45
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Restar fecha actual con fecha de base de datos y comparar resultado en seg

Puedes usar la función strtotime
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 20/03/2014, 08:54
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Restar fecha actual con fecha de base de datos y comparar resultado en seg

Cita:
Iniciado por Eleazan Ver Mensaje
Puedes usar la función strtotime
Lo q pasa q tendria q cambiar una parte engorrosa del sistema.

Yo lo pregunte de forma "simple" para ver como puedo aplicarlo, pero tengo q comparar cientos de echas de bases de datos con fechas actuales y ese resultado con dias expresados en segundos en la base de datos.

1 día equivale a 86400 segundos... Con strtotime a cuantos segundos equivale?, seria strtotime("1 day")?, porq podria hacer un script para cambiar el campo q tiene los dias expresados en segundos y asi poder usar strtotime con todo.
  #4 (permalink)  
Antiguo 20/03/2014, 08:56
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Restar fecha actual con fecha de base de datos y comparar resultado en seg

Uhm, la idea (si no entiendo mal), sería esta:

Código PHP:
$fechaActual date("Y-m-d H:i:s"); 
$fechaBaseDeDatos '2014-02-14 13:15:05'
$resultado strtotime($fechaActual) - strtotime($fechaBaseDeDatos); 
Así, $resultado será la diferencia en segundos entre ambas fechas... ¿es eso lo q quieres?

PD: O si lo quieres hacer en la consulta, puedes usar DATEDIFF() (Suponiendo que uses MySQL)
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 20/03/2014, 09:01
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Restar fecha actual con fecha de base de datos y comparar resultado en seg

A ver, parto de esta base: Como hago para saber a cuantos segundos equivale 1 dia con strtotime?
  #6 (permalink)  
Antiguo 20/03/2014, 09:05
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Restar fecha actual con fecha de base de datos y comparar resultado en seg

Cita:
Iniciado por reborn Ver Mensaje
A ver, parto de esta base: Como hago para saber a cuantos segundos equivale 1 dia con strtotime?
¿para que necesitas strtotime para eso? :/

1 dia = 60 (segs) * 60 (min) * 24(horas).


No entiendo pq quieres usar strtotime para calcular eso. 1 día siempre es la misma cantidad de segundos... x'D
__________________
>> Eleazan's Source
>> @Eleazan
  #7 (permalink)  
Antiguo 20/03/2014, 09:13
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Restar fecha actual con fecha de base de datos y comparar resultado en seg

Cita:
Iniciado por Eleazan Ver Mensaje
¿para que necesitas strtotime para eso? :/

1 dia = 60 (segs) * 60 (min) * 24(horas).


No entiendo pq quieres usar strtotime para calcular eso. 1 día siempre es la misma cantidad de segundos... x'D
Pero si uso srtotime, lo tengo q usar con todos.

Como dije arriba: 1 dias es = a 86400 segundos

Entonces si yo uso algo como lo q me dijiste vos:
Código PHP:
$fechaActual date("Y-m-d H:i:s"); 
$fechaBaseDeDatos '2014-02-14 13:15:05'
$resultado strtotime($fechaActual) - strtotime($fechaBaseDeDatos); 
ese $resultado esta expresado en segundos pero de una fecha unix

Mi pregunta es: como hago para comparar esos segundos de fecha unix con los segundos "comunes" equivalentes a 1 dia, o es todo lo mismo?

Por ejemplo, si ese $resultado me da 1554686 segundos (por decir algo), yo los puedo comparar con 86400 segundos?
  #8 (permalink)  
Antiguo 20/03/2014, 09:17
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Restar fecha actual con fecha de base de datos y comparar resultado en seg

Sí, puedes comparar lo q quieras.

Los segundos (de tiempo), son segundos. No hay "segundos de unix" o "segundos de dia". Todo es la misma unidad.

1 dia son 86400, y si tienes 1554686 segundos, y lo divides entre 86400, sabrás que son casi casi 18 días ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #9 (permalink)  
Antiguo 20/03/2014, 09:22
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Restar fecha actual con fecha de base de datos y comparar resultado en seg

Cita:
Iniciado por Eleazan Ver Mensaje
Sí, puedes comparar lo q quieras.

Los segundos (de tiempo), son segundos. No hay "segundos de unix" o "segundos de dia". Todo es la misma unidad.

1 dia son 86400, y si tienes 1554686 segundos, y lo divides entre 86400, sabrás que son casi casi 18 días ;)
Ah, ok.
Yo pense q la fecha unix tiraba segundos "especiales" o algo asi.

Gracias
  #10 (permalink)  
Antiguo 20/03/2014, 09:24
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Restar fecha actual con fecha de base de datos y comparar resultado en seg

Cita:
Iniciado por reborn Ver Mensaje
Ah, ok.
Yo pense q la fecha unix tiraba segundos "especiales" o algo asi.

Gracias
No, no son segundos "especiales".

Te estarás liando pq las fechas se calculan con los segundos que hay desde 01-01-1970. Pero estás haciendo una diferencia, asiq, tendrás los segundos entre una fecha A y otra B, nada de q preocuparse ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #11 (permalink)  
Antiguo 20/03/2014, 09:45
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Restar fecha actual con fecha de base de datos y comparar resultado en seg

OK, muchas gracias
  #12 (permalink)  
Antiguo 20/03/2014, 09:48
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Restar fecha actual con fecha de base de datos y comparar resultado en seg

Puedes usar la clase DateTime para lo que necesitas y hacer los cálculos de forma mas "natural" te dejo la documentación y un ejemplo: http://www.php.net/manual/en/book.datetime.php
Código PHP:
Ver original
  1. $startDate = new DateTime('2014-02-14 13:15:05',new DateTimeZone('America/Bogota'));
  2. $endDate = new DateTime('now', new DateTimeZone('America/Bogota'));
  3. $endDate->modify('+1 day');
  4. $interval = $startDate->diff($endDate);
  5. echo $interval->format('%y años %m meses %a dias %h horas %i minutos %S segundos');
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: actual, fecha, restar, resultado, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:42.