Foros del Web » Programando para Internet » PHP »

como sumar horas y minutos?

Estas en el tema de como sumar horas y minutos? en el foro de PHP en Foros del Web. como es posible sumar horas guardadas en la base de datos? en formato de 12 horas, no necesito los segundos, asi que estoy guardando en ...
  #1 (permalink)  
Antiguo 26/08/2012, 22:20
Avatar de RichBoy  
Fecha de Ingreso: agosto-2010
Mensajes: 177
Antigüedad: 13 años, 9 meses
Puntos: 7
como sumar horas y minutos?

como es posible sumar horas guardadas en la base de datos? en formato de 12 horas, no necesito los segundos, asi que estoy guardando en tipo varchar, no se si esto sea correcto.

12:36
2:17
  #2 (permalink)  
Antiguo 26/08/2012, 22:26
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: como sumar horas y minutos?

generalmente se usa datetime.

si lo tienes así debes convertir la fecha a tipo unix con mktime()

luego sumas los minutos que quieras, por ejemplo una hora = 3600 segundos eso se lo sumas

y al resultado los conviertes de nuevo a date() para guardarlo en la bd.
  #3 (permalink)  
Antiguo 26/08/2012, 22:37
Avatar de RichBoy  
Fecha de Ingreso: agosto-2010
Mensajes: 177
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: como sumar horas y minutos?

Gracias memo, no sera mas sensillo mejor guardar las horas y minutOs aparte? y despues sumarlos campos usando:

sum(HOUR(hora)) as horas, sum(MINUTE(minuto)) as minutos

?
  #4 (permalink)  
Antiguo 26/08/2012, 22:44
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: como sumar horas y minutos?

bueno es que este es el foro de php no de mysql, te doy una respuesta con php, pero si a ti te sirve esa consulta pues hazlo así.
  #5 (permalink)  
Antiguo 26/08/2012, 22:44
Avatar de RichBoy  
Fecha de Ingreso: agosto-2010
Mensajes: 177
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: como sumar horas y minutos?

O tal ves, modificar el campo a TIME y simplemente sumar y despues usar substr para arreglar las horas?

Solo trato de averiguar cual podria ser la mejor manera.
  #6 (permalink)  
Antiguo 26/08/2012, 22:52
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: como sumar horas y minutos?

Pues si eso es lo lindo de la programación no hay una forma estricat de hacer algo, en fin yo ya te di mi sugernecia es la que siempre uso y no me fallá hasta ahora.
  #7 (permalink)  
Antiguo 26/08/2012, 22:58
Avatar de RichBoy  
Fecha de Ingreso: agosto-2010
Mensajes: 177
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: como sumar horas y minutos?

asi es, gracias memo, intento aplicar ru sugerencia pero no me resulta convertir solamente la hora a unix mktime
  #8 (permalink)  
Antiguo 26/08/2012, 23:07
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: como sumar horas y minutos?

En este ejemplo tomo la hora actual, y le sumo una hora. Si quieres hacerlo con una fecha diferente a la actual, podrías explotar dicha fecha.
Código PHP:
Ver original
  1. <?php
  2. $ahora = date('Y-m-d H:i:s');
  3. echo $ahora.'<br/>';
  4. $unix = mktime(date('H'),date('i'),date('s'),date('m'),date('d'),date('Y'));
  5. echo $unix.'<br/>';
  6. $unix = $unix + 3600;
  7. $enUnaHora = date('Y-m-d H:i:s', $unix);
  8. echo $enUnaHora.'<br/>';
  9. ?>
  #9 (permalink)  
Antiguo 26/08/2012, 23:12
Avatar de RichBoy  
Fecha de Ingreso: agosto-2010
Mensajes: 177
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: como sumar horas y minutos?

Gracias memo, eso lo entiendo, lo que no se es como sumar varios registros de horas, ejemplo: 2:30 + 5:50 + 7:35 = 15:55
  #10 (permalink)  
Antiguo 26/08/2012, 23:22
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: como sumar horas y minutos?

Ya bueno ahi la cosa va variando y depende más del ingenio, primero que nada si son fechas del mismo día (supongo que si, por que si no estamos fritos) pues simplemente podrias transformar cada hora a segundos

en este caso solo es aritmetica básica:

2*3600 + 30*60 = 9000
5*3600 + 50*60 = 21000
7*3600 + 35 * 60 = 27300
-----------------------
57300 / 3600 = 15
57300 % 3600 = 3300
3300 / 60 = 55

resultado = 15:55

y sin php ;)
  #11 (permalink)  
Antiguo 26/08/2012, 23:35
Avatar de RichBoy  
Fecha de Ingreso: agosto-2010
Mensajes: 177
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: como sumar horas y minutos?

y con php? :d
  #12 (permalink)  
Antiguo 26/08/2012, 23:46
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: como sumar horas y minutos?

ahm pues es solo llevar la lógica a la programación

te voy a dar media respuesta. con esto solo te faltará conseguir el resultado final que es la hora 15:55

Código PHP:
Ver original
  1. <?php
  2. function convertirSegundos($hora){
  3.     $hsegundos = $hora[0]*3600;
  4.     $msegundos = $hora[1]*60;
  5.     $segundos = $hsegundos + $msegundos;
  6.     return $segundos;
  7. }
  8.  
  9. $hora1 = '2:30';
  10. $hora2 = '5:50';
  11. $hora3 = '7:35';
  12.  
  13. $hora1 = explode(':',$hora1);
  14. $hora2 = explode(':',$hora2);
  15. $hora3 = explode(':',$hora3);
  16.  
  17. $hora1 = convertirSegundos($hora1);
  18. $hora2 = convertirSegundos($hora2);
  19. $hora3 = convertirSegundos($hora3);
  20.  
  21. $totalSegundos = $hora1 + $hora2 + $hora3;
  22. echo $totalSegundos;
  23. ?>
  #13 (permalink)  
Antiguo 26/08/2012, 23:51
Avatar de RichBoy  
Fecha de Ingreso: agosto-2010
Mensajes: 177
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: como sumar horas y minutos?

Perfecto :), solo que me da un error

Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\horas\index.php on line 3

:/
  #14 (permalink)  
Antiguo 26/08/2012, 23:55
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: como sumar horas y minutos?

pues habrás copiado mal, por que si yo copio y pego este code que te puse en mi editor, lo guardo y lo corro, me da 57300.
  #15 (permalink)  
Antiguo 26/08/2012, 23:59
Avatar de RichBoy  
Fecha de Ingreso: agosto-2010
Mensajes: 177
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: como sumar horas y minutos?

XD que raro, me sigue dando el error
  #16 (permalink)  
Antiguo 27/08/2012, 00:00
Avatar de RichBoy  
Fecha de Ingreso: agosto-2010
Mensajes: 177
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: como sumar horas y minutos?

ok, ya se arreglo :D
  #17 (permalink)  
Antiguo 27/08/2012, 00:08
Avatar de RichBoy  
Fecha de Ingreso: agosto-2010
Mensajes: 177
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: como sumar horas y minutos?

Bien, aqui la funcion para convertir los segundos:

Código PHP:
Ver original
  1. function convertir_segundos($segundos) {
  2.  
  3. $horas = floor($segundos/3600);
  4. $minutos = floor(($segundos-($horas*3600))/60);
  5. $segundo = $segundos-($horas*3600)-($minutos*60);
  6. echo $horas.':'.$minutos;
  7.  
  8. }

:D

Muchas gracias por tu ayuda memo,

Saludos.
  #18 (permalink)  
Antiguo 27/08/2012, 00:14
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: como sumar horas y minutos?

de nada ;)

Etiquetas: horas
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 03:22.