Foros del Web » Programando para Internet » PHP »

saber si entre dos fecha tenemos un intervalo de tiempo

Estas en el tema de saber si entre dos fecha tenemos un intervalo de tiempo en el foro de PHP en Foros del Web. Hola alguien me puede ayudar para saber en php si entre dos fechas hay una diferencia de dos horas?...
  #1 (permalink)  
Antiguo 21/06/2014, 07:42
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
saber si entre dos fecha tenemos un intervalo de tiempo

Hola alguien me puede ayudar para saber en php si entre dos fechas hay una diferencia de dos horas?
  #2 (permalink)  
Antiguo 21/06/2014, 08:18
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: saber si entre dos fecha tenemos un intervalo de tiempo

HOLA

Como no se si quieres exactamente 2 horas o mas de 2 horas.......te dejo esto que hice mirando el manual:

Código PHP:
Ver original
  1. <?php
  2.     // Para PHP >= 5.3.0
  3.    
  4.     date_default_timezone_set('America/Bogota');   
  5.     $ini = new DateTime('2014-04-15'); // formato: aaaa-mm-dd
  6.     $ini->setTime(12,35,0);
  7.     $fin = new DateTime('2014-04-15');
  8.     $fin->setTime(14,44,0);
  9.    
  10.     $intervalo = $ini->diff($fin);
  11.    
  12.     $diff_d = $intervalo->format('%a'); // dias de dif.
  13.     $diff_h = $intervalo->format('%h'); // horas de dif.
  14.     $diff_m = $intervalo->format('%i'); // minutos ...
  15.     $diff_s = $intervalo->format('%s'); // segundos ..
  16.    
  17.     if ($diff_h==2 and $diff_m==0)
  18.         echo "Pasaron 2 horas y quizas algunos segundos :)";           
  19.     elseif ($diff_d >0 or $diff_h>=2)
  20.         echo "Pasaron 2 horas o mas";
  21.     else
  22.         echo "No pasaron 2 horas";
__________________
Salu2!
  #3 (permalink)  
Antiguo 21/06/2014, 10:07
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: saber si entre dos fecha tenemos un intervalo de tiempo

Cita:
Iniciado por Italico76 Ver Mensaje
HOLA

Como no se si quieres exactamente 2 horas o mas de 2 horas.......te dejo esto que hice mirando el manual:

Código PHP:
Ver original
  1. <?php
  2.     // Para PHP >= 5.3.0
  3.    
  4.     date_default_timezone_set('America/Bogota');   
  5.     $ini = new DateTime('2014-04-15'); // formato: aaaa-mm-dd
  6.     $ini->setTime(12,35,0);
  7.     $fin = new DateTime('2014-04-15');
  8.     $fin->setTime(14,44,0);
  9.    
  10.     $intervalo = $ini->diff($fin);
  11.    
  12.     $diff_d = $intervalo->format('%a'); // dias de dif.
  13.     $diff_h = $intervalo->format('%h'); // horas de dif.
  14.     $diff_m = $intervalo->format('%i'); // minutos ...
  15.     $diff_s = $intervalo->format('%s'); // segundos ..
  16.    
  17.     if ($diff_h==2 and $diff_m==0)
  18.         echo "Pasaron 2 horas y quizas algunos segundos :)";           
  19.     elseif ($diff_d >0 or $diff_h>=2)
  20.         echo "Pasaron 2 horas o mas";
  21.     else
  22.         echo "No pasaron 2 horas";
Hola, gracias por dedicar tiempo a mi post, pero todo eso hay que hacer para saber una sola condicion, igual estoy ojeando a fondo todas las funciones de fecha de php haber si encuentro algo que me acorte el codigo
  #4 (permalink)  
Antiguo 21/06/2014, 10:18
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: saber si entre dos fecha tenemos un intervalo de tiempo

Podrias usar mktime() pero no es seguro... o sea si pones algo sin sentido..... como mes 14 .. grave

Código PHP:
Ver original
  1. $dateDiff = mktime(15,10,0,12,20,2014) - mktime(11,0,0,12,20,2014);
  2. echo (floor($dateDiff/60/60) >=2 ? 'Pasaron 2 hs' : 'Aun no pasaron 2 hs');

La gracia de usar la clase DateTime es que puedes chequear si algo salio mal... y que te provee muchos metodos interesantes
__________________
Salu2!
  #5 (permalink)  
Antiguo 21/06/2014, 11:13
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: saber si entre dos fecha tenemos un intervalo de tiempo

Hola hice algo asin haber que opinas.


Código PHP:
Ver original
  1. $fecha_actual = date('Y-m-j H:i:s');
  2. $nuevafecha = strtotime ( '+1 hour' , strtotime ( $fecha_actual ) ) ;
  3. $nuevafecha = date ( 'Y-m-j H:i:s' , $nuevafecha );
  4.  
  5.  
  6. if(strtotime($fecha_actual)>strtotime($nuevafecha)){
  7.     echo"paso una hora";
  8. }else{
  9.     echo"aun no paso una hora";
  10. }
  #6 (permalink)  
Antiguo 21/06/2014, 11:46
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: saber si entre dos fecha tenemos un intervalo de tiempo

Si te funciona........ el tema es que la funcion DateTime llega a relevar a strotime() y mktime() que se podrian considerar obsoletas por varias razones:


- Son funciones asi que son para un estilo procedural (no orientado a objetos)

- No son seguras: no proveen una forma de chequear que ha salido mal con ellas

- Su uso es menos natural por (1)


Y no creas que siempre todo lo orientado a objetos es mas "verbose" ... un poco si... pero desde PHP 5.4 existe el "encadenamiento de metodos" extendido al propio constructor lo que simplifica mucho
__________________
Salu2!

Última edición por Italico76; 21/06/2014 a las 12:12
  #7 (permalink)  
Antiguo 21/06/2014, 16:05
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: saber si entre dos fecha tenemos un intervalo de tiempo

Cita:
Iniciado por Italico76 Ver Mensaje
Si te funciona........ el tema es que la funcion DateTime llega a relevar a strotime() y mktime() que se podrian considerar obsoletas por varias razones:


- Son funciones asi que son para un estilo procedural (no orientado a objetos)

- No son seguras: no proveen una forma de chequear que ha salido mal con ellas

- Su uso es menos natural por (1)


Y no creas que siempre todo lo orientado a objetos es mas "verbose" ... un poco si... pero desde PHP 5.4 existe el "encadenamiento de metodos" extendido al propio constructor lo que simplifica mucho
Gracias por tu comentario la verdad que tienes toda la razon, probe esto creo que funciona haber que opinas.

Código PHP:
Ver original
  1. $fecha_actual=date("Y-m-d H:i:s");
  2. $fecha_nueva=new DateTime($fecha_actual);
  3. $fecha_nueva->add(new DateInterval("PT2H"));
  4. $fecha_nueva=$fecha_nueva->format("Y-m-d H:i:s");
  5. $fecha_fin=new DateTime($fecha_nueva);
  6. $fecha_ini=new DateTime($fecha_actual);
  7.  
  8. if($fecha_fin<$fecha_ini){
  9.     echo"ha pasado dos hora o mas";
  10. }else{
  11.     echo"todavia no ha pasado dos hora";
  12. }
  #8 (permalink)  
Antiguo 21/06/2014, 16:09
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: saber si entre dos fecha tenemos un intervalo de tiempo

Amigo:

Dudo puedas hacer esto:

Cita:
if($fecha_fin<$fecha_ini){
..
}
El problema es que para que eso fuera valido tendria que existir "sobrecarga de operadores" y eso no esta soportado aun: definir la operacion < ó > para tipos no-nativos como una clase.

El otro problema es que asumes que si lo anterior se pudiera, la diferencia seria de 2 horas... y por que no 1 segundo o 26 minutos o 9 dias ?
__________________
Salu2!

Última edición por Italico76; 21/06/2014 a las 17:13
  #9 (permalink)  
Antiguo 22/06/2014, 05:23
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: saber si entre dos fecha tenemos un intervalo de tiempo

Cita:
Iniciado por Italico76 Ver Mensaje
Amigo:

Dudo puedas hacer esto:



El problema es que para que eso fuera valido tendria que existir "sobrecarga de operadores" y eso no esta soportado aun: definir la operacion < ó > para tipos no-nativos como una clase.

El otro problema es que asumes que si lo anterior se pudiera, la diferencia seria de 2 horas... y por que no 1 segundo o 26 minutos o 9 dias ?
Hola desde php 5.2.2 se pueden comparar fechas usando los operadores de comparacion:
http://www.php.net/manual/es/datetime.diff.php


El otro problema tienes razon que no funcionaria pero porque solo era un ejemplo evidentemente no puedes comparar la fecha actual con la fecha actual mas dos hora porque siempre daria el mismo resultado solo se tendria que cambiar la primera linea de codigo esta:
Código PHP:
Ver original
  1. $fecha_actual=date("Y-m-d H:i:s");
por la fecha a comparar:
Código PHP:
Ver original
  1. $fecha_comparar="2014-12-22 10:00:00";

A mi me funciona para lo que yo lo quiero que es solamente saber si una fecha que tengo guardada en mi base de datos tiene un intervalo de dos horas es decir si han pasado dos horas o mas verdadero si no falso.
Un saludo.
  #10 (permalink)  
Antiguo 22/06/2014, 05:34
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: saber si entre dos fecha tenemos un intervalo de tiempo

HO HO HO.... o sea.. que le dieron a DateTime sobrecarga de operadores..... que vaina no generalizan esa funcionalidad a clases definidas por los usuarios......seria genial
__________________
Salu2!

Etiquetas: fecha, intervalo, tenemos, tiempo
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 12:54.