Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Sumar variables tipo TIME

Estas en el tema de Sumar variables tipo TIME en el foro de PHP en Foros del Web. Hola! a ver si me pueden decir como hago esto porque no doy con la forma: Tengo 2 variables que muestran Horas:Minutos:Segundos tal que asi: ...
  #1 (permalink)  
Antiguo 17/02/2015, 07:02
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Sumar variables tipo TIME

Hola! a ver si me pueden decir como hago esto porque no doy con la forma:

Tengo 2 variables que muestran Horas:Minutos:Segundos tal que asi:

Código PHP:
$variable1 05:57:55;
$variable2 00:02:57
Quiero sumarlas de modo que el resultado sea= 06:00:52

¿Como lo hago?

Lo mas que me he acercado a sido haciendo esto:

Código PHP:
$resultado date('H:s:i',mktime($variable1+$variable2)); 
Pero el resultado que me da es = 05:18:22 lo cual esta mal.
__________________
Follow me on twitter @franbedia
  #2 (permalink)  
Antiguo 17/02/2015, 09:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Sumar variables tipo TIME

Utiliza los métodos de la clase DateTime.

Código PHP:
Ver original
  1. function sumar($hora1, $hora2){
  2.     list($h, $m, $s) = explode(':', $hora2); //Separo los elementos de la segunda hora
  3.     $a = new DateTime($hora1); //Creo un objeto DateTime
  4.     $b = new DateInterval(sprintf('PT%sH%sM%sS', $h, $m, $s)); //Creo un objeto DateInterval
  5.     $a->add($b); //Sumo las horas
  6.     return $a->format('H:i:s'); //Retorno la suma
  7. }
  8.  
  9. echo sumar('05:57:55', '00:02:57'); //Imprime 06:00:52

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

Última edición por Alexis88; 17/02/2015 a las 15:20 Razón: Corrección
  #3 (permalink)  
Antiguo 17/02/2015, 10:17
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Sumar variables tipo TIME

No se si mi método es mejor o peor que el de Alexis pero yo lo haría así

Código PHP:
Ver original
  1. $v1 = '05:57:55';
  2. $v2 = '00:02:57';//minutos a agregar
  3. $v2 = strtotime($v2) - strtotime('today');//convertir los minutos a agregar en segundos
  4. $v1 = strtotime('+'.$v2.' seconds', strtotime($v1));//agregar los segundos
  5. echo date('h:i:s', $v1);//imprimir la hora de destino
  #4 (permalink)  
Antiguo 17/02/2015, 10:38
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Sumar variables tipo TIME

Alexis88 creo que no es necesario utilizar el explode. Puedes utilizar el metodo format para lo que estas intentando en tu función:
Código PHP:
Ver original
  1. function sumar($hora1, $hora2){
  2.     $a = new DateTime($hora1); //Creo un objeto DateTime
  3.     $b = new DateInterval(
  4.         (new DateTime($hora2))->format('\P\TH\Hi\Ms\S')
  5.     ); //Creo un objeto DateInterval
  6.     $a->add($b); //Sumo las horas
  7.     return $a->format('h:i:s'); //Imprimo las horas
  8. }
  9.  
  10. echo sumar('05:57:55', '00:02:57'); //Imprime 06:00:52

ArturoGallegos, creo que mas bien es un preferencia si quieres usar una u otra
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 17/02/2015, 10:57
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Sumar variables tipo TIME

Gracias por la observación, hhs. En realidad, estoy empezando a conocer la clase DateTime y no me había fijado en los demás usos que se le pueden dar a ese método.

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

Última edición por Alexis88; 17/02/2015 a las 15:22
  #6 (permalink)  
Antiguo 18/02/2015, 10:16
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Sumar variables tipo TIME

Gracias a todos por sus respuestas!
He probado ambas opciones y están correctas: imprimen bien la suma :)
Al final me he quedado con la de ArturoGallegos porque me parece un pelin mas "eficiente", aunque en verdad no lo he podido testear porque al estar trabajando en local los tiempos son identicos y ambas realizan la suma al instante.

Marco el tema como solucionado!
Nuevamente muchas gracias por la ayuda.

Un saludo.
__________________
Follow me on twitter @franbedia

Etiquetas: time, tipo, variable, variables
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 20:57.