PHP - Sumar Horas

 
Vista:
sin imagen de perfil
Val: 191
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Sumar Horas

Publicado por Brayan (76 intervenciones) el 31/01/2017 15:09:37
Buenos dias desde mi pais, tengo una super tranca, actualmente he logrado hacer muchas cosas con las fechas, pero estoy necesitando sumar las horas minutos y segundos de dos o mas fechas sin embargo no he tenido exito puedo sacar las diferencias entre una fecha y otra, pero si por ejemplo tengo estas dos diferencias:

1:34:58 - 1 hora 34 minutos 58 segundos
0:35:00 - 35 minutos

y los quiero sumar no se como hacerlo intente con esto:

1
strtotime('+1:34:58',strtotime('0:35:00'))

y no me da, entonces queria saber si alguien sabe como podria sumar esas horas minutos y segundos en conjunto ya que en muchas ocasiones podria presentarse que sea muchas fechas al tiempo.

De antemano muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 191
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Sumar Horas

Publicado por Brayan (76 intervenciones) el 31/01/2017 17:06:59
Siendo muy sincero no logre entender ese codigo, sin embargo antes de verlo y habia encontrado otro, tanto para sumas como para restas el cual comparto en este post:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
function suma($date_1 , $date_2)
{
    $datetime1 = date_create($date_1);
    $datetime2 = date_create($date_2);
 
    $interval = ($datetime1 + $datetime2);
 
    return $interval;
 
}
 
    function suma_horas($hora1,$hora2){
 
    $hora1=explode(":",$hora1);
    $hora2=explode(":",$hora2);
    $temp=0;
 
    //sumo segundos 
    $segundos=(int)$hora1[2]+(int)$hora2[2];
    while($segundos>=60){
        $segundos=$segundos-60;
        $temp++;
    }
 
    //sumo minutos 
    $minutos=(int)$hora1[1]+(int)$hora2[1]+$temp;
    $temp=0;
    while($minutos>=60){
        $minutos=$minutos-60;
        $temp++;
    }
 
    //sumo horas 
    $horas=(int)$hora1[0]+(int)$hora2[0]+$temp;
 
    if($horas<10)
        $horas= '0'.$horas;
 
    if($minutos<10)
        $minutos= '0'.$minutos;
 
    if($segundos<10)
        $segundos= '0'.$segundos;
 
    $sum_hrs = $horas.':'.$minutos.':'.$segundos;
 
    return ($sum_hrs);
 
    }
 
        /* 
     * Original de: http://www.aaamatematicas.com/subtsbhm.htm      
     */
 
    ##Función que resta horas Ahi que tenerla por si a caso
 
    function restar_horas($hora1,$hora2){
 
    $temp1 = explode(":",$hora1);
    $temp_h1 = (int)$temp1[0];
    $temp_m1 = (int)$temp1[1];
    $temp_s1 = (int)$temp1[2];
    $temp2 = explode(":",$hora2);
    $temp_h2 = (int)$temp2[0];
    $temp_m2 = (int)$temp2[1];
    $temp_s2 = (int)$temp2[2];
 
    // si $hora2 es mayor que la $hora1, invierto 
    if( $temp_h1 < $temp_h2 ){
        $temp  = $hora1;
        $hora1 = $hora2;
        $hora2 = $temp;
    }
    /* si $hora2 es igual $hora1 y los minutos de 
       $hora2 son mayor que los de $hora1, invierto*/
    elseif( $temp_h1 == $temp_h2 && $temp_m1 < $temp_m2){
        $temp  = $hora1;
        $hora1 = $hora2;
        $hora2 = $temp;
    }
    /* horas y minutos iguales, si los segundos de  
       $hora2 son mayores que los de $hora1,invierto*/
    elseif( $temp_h1 == $temp_h2 && $temp_m1 == $temp_m2 && $temp_s1 < $temp_s2){
        $temp  = $hora1;
        $hora1 = $hora2;
        $hora2 = $temp;
    }
 
    $hora1=explode(":",$hora1);
    $hora2=explode(":",$hora2);
    $temp_horas = 0;
    $temp_minutos = 0;
 
    //resto segundos 
    $segundos;
    if( (int)$hora1[2] < (int)$hora2[2] ){
        $temp_minutos = -1;
        $segundos = ( (int)$hora1[2] + 60 ) - (int)$hora2[2];
    }
    else
        $segundos = (int)$hora1[2] - (int)$hora2[2];
 
    //resto minutos 
    $minutos;
    if( (int)$hora1[1] < (int)$hora2[1] ){
        $temp_horas = -1;
        $minutos = ( (int)$hora1[1] + 60 ) - (int)$hora2[1] + $temp_minutos;
    }
    else
        $minutos =  (int)$hora1[1] - (int)$hora2[1] + $temp_minutos;
 
    //resto horas     
    $horas = (int)$hora1[0]  - (int)$hora2[0] + $temp_horas;
 
    if($horas<10)
        $horas= '0'.$horas;
 
    if($minutos<10)
        $minutos= '0'.$minutos;
 
    if($segundos<10)
        $segundos= '0'.$segundos;
 
    $rst_hrs = $horas.':'.$minutos.':'.$segundos;
 
    return ($rst_hrs);
 
    }


Copie y pegue tal cual lo consegui, yo modifique las variables para entenderlo mejor y saber que pertenece a que.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Sumar Horas

Publicado por Eloy (1 intervención) el 16/07/2020 22:29:58
Excelente aporte, justo lo que necesitaba, la función suma_horas la retoqué un poco para utilizarla con más de 2 variables seteadas. De esta manera le puedes pasar un array con cualquier cantidad de horas. La dejo por si alguno lo necesita y le sirve.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function suma_horas($arrHoras){
    $temp=0;
    $segundos=""; $minutos=""; $horas="";
    foreach($arrHoras as $hora){
        $hora= explode(":",$hora);
        $segundos+= $hora[2];
        $minutos += $hora[1];
        if($hora[0] == 12){
            $horas += 00;
        }else{
            $horas+=$hora[0];
        }
    }
 
    //sumo segundos
    while($segundos>=60){
        $segundos=$segundos-60;
        $temp++;
    }
    $minutos+=$temp;
 
    $temp=0;
    while($minutos>=60){
        $minutos -= 60;
        $temp++;
    }
 
    //sumo horas
    $horas += $temp;
 
    if($horas<10){$horas= '0'.$horas;}
    if($minutos<10){$minutos= '0'.$minutos;}
    if($segundos<10){$segundos= '0'.$segundos;}
 
    $sum_hrs = $horas.$minutos.$segundos;
    return $sum_hrs;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar