Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Restar Hora

Estas en el tema de Restar Hora en el foro de PHP en Foros del Web. Hola amigos. Como puedo restar estas Dos Horas: Si la Hora actual es: 02:30:00 y tengo otra hora que es 03:30:00 La diferiencia de una ...
  #1 (permalink)  
Antiguo 04/03/2014, 18:50
 
Fecha de Ingreso: octubre-2009
Mensajes: 46
Antigüedad: 15 años, 1 mes
Puntos: 0
Busqueda Restar Hora

Hola amigos.

Como puedo restar estas Dos Horas:

Si la Hora actual es:

02:30:00

y tengo otra hora que es

03:30:00

La diferiencia de una a otra seria de 1 hora!

Quisiera que me orientaran como le puedo hacer para saber el tiempo que hay de una a otra!

Espero averme explicado.

Grasias!
  #2 (permalink)  
Antiguo 04/03/2014, 19:42
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 14 años, 2 meses
Puntos: 56
Respuesta: Restar Hora

para no complicarte con clases te doy una funcion que cree hace tiempo para esto
Código PHP:
Ver original
  1. function time_dif($time1,$time2){
  2.     $time1 = date_parse($time1);
  3.     $time2 = date_parse($time2);
  4.     //convertimos a segundos
  5.     $seconds1 = $time1['hour'] * 3600 + $time1['minute'] * 60 + $time1['second'];
  6.     $seconds2 = $time2['hour'] * 3600 + $time2['minute'] * 60 + $time2['second'];
  7.     $diff = $seconds2 - $seconds1;
  8.     return gmdate("H:i:s",$diff);
  9. }
  10. echo time_dif('02:30:00','03:30:00');
Si el segundo valor es inferior al primero te da un valor como si fuera otro dia
Código PHP:
Ver original
  1. echo time_dif('03:30:00','02:30:00');
esto te daria como resultado 23:00:00
si quieres hacerlo con clases
Código PHP:
Ver original
  1. $datetime1 = date_create('02:30:00');
  2. $datetime2 = date_create('03:41:00');
  3. $interval = date_diff($datetime1, $datetime2);
  4. echo $interval->format('%H:%i:%s');
El unico problema de usar esta forma es que el cero inicial no se muestra en las horas ni en los minutos ni los segundos.
Para evitar esto puedes usar el format individualmente y usar la funcion str_pad para rellenar, o usas mi funcion.

Última edición por Dalam; 04/03/2014 a las 19:52
  #3 (permalink)  
Antiguo 04/03/2014, 19:58
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Restar Hora

Otra alternativa:

Código PHP:
Ver original
  1. echo date('H:i:s', strtotime('03:30:30') - strtotime('02:30:00'));

El resultado será 01:00:00. La ventaja está en que ya no tienes que preocuparte por los ceros delante de los números menos que 10, además de que muestra la diferencia tanto en horas, minutos y segundos, por ejemplo, si restas 04:27:14 con 02:12:57 obtendrás 02:14:17, obteniendo así un resultado exacto. La desventaja está en que si deseas que se muestre como Diferencia: 1, tendrías que separar la hora del resultado, ya sea con funciones como explode o substr. Por ejemplo:

Código PHP:
Ver original
  1. $r = date('H:i:s', strtotime('03:30:00') - strtotime('02:30:00'));
  2. echo substr(substr($r, 0, 2), 1, 2); //Imprime 1

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 07/03/2014, 23:16
 
Fecha de Ingreso: octubre-2009
Mensajes: 46
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Restar Hora

Uy muchas Grasias amigos, justo lo que buscaba me funciono bien los dos.

Pd. Disculpen por la tardanza no me abia podido conectar Grasias!

Etiquetas: restar
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 22:43.