Foros del Web » Programando para Internet » PHP »

suma de horas

Estas en el tema de suma de horas en el foro de PHP en Foros del Web. Código PHP:      function  CalcularHoraSalida ( $hora_ingreso ) {                 if( $hora_ingreso  ==  NULL )             {              $hora_salida  =  '00:00:00' ;             }         else             {              $jornal  = ...
  #1 (permalink)  
Antiguo 16/10/2011, 21:22
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
suma de horas

Código PHP:
    function CalcularHoraSalida($hora_ingreso) {        
        if(
$hora_ingreso == NULL)
            {
            
$hora_salida '00:00:00';
            }
        else
            {
            
$jornal ="8:30";
            
$hora_ingreso=split(":",$hora_ingreso);
            
$jornal=split(":",$jornal);
            
$horas=(int)$hora_ingreso[0]+(int)$jornal[0];
            
$minutos=(int)$hora_ingreso[1]+(int)$jornal[1];
            
$horas+=(int)($minutos/60);
            
$minutos=$minutos%60;
            if(
$minutos<10)$minutos="0".$minutos ;
            
$hora_salida $horas.":".$minutos;
            }
            
    return 
$hora_salida;
    } 
Ese es mi codigo , mando la fecha de ingreso y me devuelve la fecha de salida

pero si por ejemplo ingreso al as 23:00 salgo a las 31:30; como puedo hacer para q en vez de 31:30 salga 7:30 que es la hora q corresponde despues de 8horas30min.


gracias
  #2 (permalink)  
Antiguo 16/10/2011, 21:34
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: suma de horas

¿Cómo que a las 31? Las horas son de 00:00 a 23:00. Las 7:30 son eso mismo, 7:30 que se traduciría a AM
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 16/10/2011, 21:38
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: suma de horas

No me deje entender creo, en mi escript solo suma horas pero no esta validado para que sea maximo 23.59 y pase dnuevo a 00:00 ... eso esl o que trato de hacer.
  #4 (permalink)  
Antiguo 16/10/2011, 21:48
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: suma de horas

La mejor forma entiendo que es restando, el mayor del menor. Solo tienes que dividir el contenido de la variable y luego restar el mayor del menor.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 16/10/2011, 22:15
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 1 mes
Puntos: 21
Respuesta: suma de horas

A mi criterio es clave entender el concepto de timestamp. Timestamp te da, en segundos, un número entero. Esto te habilita a poder sumar y restar fechas sencillamente. Luego con getdate o date obtienes el valor en un formato humanoide.
__________________
_
  #6 (permalink)  
Antiguo 17/10/2011, 14:53
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: suma de horas

Tienen algun ejemplo o pueden agregarlo ami codigo ? gracias
  #7 (permalink)  
Antiguo 17/10/2011, 22:05
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: suma de horas

Que tal si lo haces así:

Código PHP:
Ver original
  1. function CalcularHoraSalida($hora_ingreso) {
  2.     return date('H:i', strtotime($hora_ingreso) + 30600);
  3. }
  4.  
  5. echo CalcularHoraSalida('23:00'); //07:30

o así:

Código PHP:
Ver original
  1. function CalcularHoraSalida($hora_ingreso) {
  2.     return date('H:i', strtotime("$hora_ingreso + 8 hours + 30 minutes"));
  3. }
  4.  
  5. echo CalcularHoraSalida('23:00'); //07:30

o así:

Código PHP:
Ver original
  1. $dt = new DateTime('23:00');
  2. $dt->add(new DateInterval('PT8H30M'));
  3. echo $dt->format('H:i'); //07:30

No olvides que la función split es obsoleta

Cita:
Esta función ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.
Espero que te sirva alguna. Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: horas, suma
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 21:34.