Foros del Web » Programando para Internet » PHP »

restar dos horas

Estas en el tema de restar dos horas en el foro de PHP en Foros del Web. Hola a todos me podrian decir como puedo restar dos horas, me explico, tengo un campo total que tiene 40:00 siendo 40 las horas y ...
  #1 (permalink)  
Antiguo 04/06/2010, 07:13
 
Fecha de Ingreso: junio-2010
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
restar dos horas

Hola a todos
me podrian decir como puedo restar dos horas, me explico, tengo un campo total que tiene 40:00 siendo 40 las horas y 00 minutos y le quiero restar 5:30, cinco horas y 30 minutos, el resultante seria 34:30 (treinta y cuatro horas y treinta minutos). De los segundos me olvido no los tomo en cuenta.

Tengo la funcion que suma dos horas, que es:

$hora1=split(":",$hora1);
$hora2=split(":",$horasTotal);
$horas=(int)$hora1[0]+(int)$hora2[0];
$minutos=(int)$hora1[1]+(int)$hora2[1];
$horas+=(int)($minutos/60);
$minutos=$minutos%60;
if($minutos<10)$minutos="0".$minutos ;
return $horas.":".$minutos;

me gustaria la funcion inversa (que resta las horas).

Gracias!!!
  #2 (permalink)  
Antiguo 04/06/2010, 08:11
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: restar dos horas

Algo podria salir de esto:
Código PHP:
//mktime(hora,minuto,segundo,mes,dia,año)
echo $horaInicio mktime(40,0,0,0,0,0);
echo 
'<br>';
echo 
$horaFin mktime(5,30,0,0,0,0);
echo 
'<br>';
//aca convertimos el resultado en un numero comprendible
//dividimos en 60 (minutos) y 60 (segundos)
echo abs(($horaInicio $horaFin)/60/60); 
Aca mas informacion.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 04/06/2010, 08:25
 
Fecha de Ingreso: junio-2010
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: restar dos horas

Si pero de esa manera sale 34.5
y tendria que salir 34:30
  #4 (permalink)  
Antiguo 04/06/2010, 08:39
Avatar de Sergiorelativo  
Fecha de Ingreso: diciembre-2009
Ubicación: Cadiz
Mensajes: 259
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: restar dos horas

Espero que te sirva:

http://www.comocrearunsitioweb.com/restar-fechas-php

¡Saludos!
  #5 (permalink)  
Antiguo 04/06/2010, 08:39
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: restar dos horas

Por eso comence mi mensaje con "Algo podria salir de esto"...

Te recomiendo que le des una vuelta a las funciones mktime que te permiten hacer restas sobre la funcion y luego revisa que mas puedes hacer... usar la funcion time() o alguna otra que funcione sobre horas.

Saludos!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #6 (permalink)  
Antiguo 05/06/2010, 06:14
 
Fecha de Ingreso: junio-2010
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: restar dos horas

Marvin lo siento pero soy un poco novato en esto y me esta costando crear una función como la de la pagina que me has pasado. Podrías ser un poco mas especifico
Muchas gracias
  #7 (permalink)  
Antiguo 07/06/2010, 10:35
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: restar dos horas

Mira basicamente lo que tienes que lograr es llevar a cabo lo que sucede en un reloj durante ese tiempo... en otras palabras, lleva el reloj a la matematica y lograras hacer lo que quieres hacer...

Código PHP:
echo $horaInicio mktime(40,0,0,0,0,0);
echo 
'<br>';
echo 
$horaFin mktime(5,30,0,0,0,0);
echo 
'<br>';
//resto las dos horas
$diferencia abs($horaInicio $horaFin);
//convierto la diferencia a horas
//para separar los resultados
//una hora tiene 60 minutos y 60 segundos
$hora floor($diferencia/(60*60));
//ahora saco los minutos
//le restas a la diferencia, las horas que ya sacaste
//volviendo a convertirla en el formato completo
//y esta vez la divides en 60 minutos
$minutos floor(($diferencia-($hora*60*60))/60);
//ahora muestras tu resultado
echo $hora.':'.$minutos
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!

Etiquetas: dos, horas, 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 01:45.