Page 1 of 1

mi funcion sumar horas

Posted: Tue Jun 17, 2014 2:53 pm
by goosfancito

Code: Select all

FUNCTION sumaHoras(aHoras)
   LOCAL nItem,;
         nHoras,;
         nMinutos,;
         nHoras1,;
         nMinutos1,;
         nTH,;
         nTM

   nHoras:= Val(SubStr(aHoras[1], 1, At(":", aHoras[1])))
   nMinutos:= Val(SubStr(aHoras[1], At(":", aHoras[1])+1))

   FOR nItem:= 2 TO Len(aHoras)
      nHoras1:= Val(SubStr(aHoras[nItem], 1, At(":",aHoras[nItem])))
      nMinutos1:= Val(SubStr(aHoras[nItem], At(":", aHoras[nItem])+1 ))

      nTM:= nMinutos + nMinutos1
      nTH:= nHoras + nHoras1

      DO WHILE  nTm >= 60
         nTH++
         nTm:= nTm - 60
      ENDDO

      nHoras:= nTH
      nMinutos:= nTm

   NEXT nItem

   RETURN (AllTrim(Str(nHoras)) + ":" + AllTrim(Str(nMinutos)))

Re: mi funcion sumar horas

Posted: Tue Jun 17, 2014 6:25 pm
by sysctrl2
Y como se usa?

saludos.

Re: mi funcion sumar horas

Posted: Wed Jun 18, 2014 7:30 am
by Biel EA6DD
Gracias por el aporte, por lo que veo recibe un array con elementos del tipo hora "hh:mm" y los suma.

De todas formas para operaciones con horas también tienes las funciones TimeToSec() y SecToTime() que pueden serte de ayuda.

Re: mi funcion sumar horas

Posted: Wed Jun 18, 2014 12:00 pm
by goosfancito
Si, es así como decis recibie un array.
Como no conozco mucha de las funciones para las horas prefiero pensar como hacer una propia que no andar buscando mucho. :)

Re: mi funcion sumar horas

Posted: Wed Jun 18, 2014 12:04 pm
by goosfancito
Como se usa:

Code: Select all

vHorarios[01]:= "7:00"
vHorarios[02]:= "13:00"
vHorarios[03]:= "7:00"
vHorarios[05]:= "13:00"
vHorarios[07]:= "13:59"

msginfo( " Total de horas: " +sumaHoras(vHorarios))
Listo.

Re: mi funcion sumar horas

Posted: Wed Jun 18, 2014 4:47 pm
by sysctrl2
Gracias Goos,

lo voy a necesitar.

saludos.

Re: mi funcion sumar horas

Posted: Wed Jun 18, 2014 8:31 pm
by goosfancito
me alegro!

Re: mi funcion sumar horas

Posted: Thu Jun 19, 2014 12:35 am
by gabo
Para obtener la diferencia entre horas

::oNE_Tiempo:cText:= SubStr( TimeDiff( ::oNE_HoraEntrada:Value, Time() ), 4 )

Saludos

Code: Select all

/*-----------------------------------------------------------------------------------------------*/
STATIC FUNCTION TimeDiff( cStartTime, cEndTime )
/*-----------------------------------------------------------------------------------------------*/
   RETURN TimeAsString( IF(cEndTime < cStartTime, 86400 , 0) + TimeAsSeconds(cEndTime) - TimeAsSeconds(cStartTime) )

/*-----------------------------------------------------------------------------------------------*/
STATIC FUNCTION TimeAsString( nSeconds )
/*-----------------------------------------------------------------------------------------------*/
   RETURN StrZero(INT(Mod(nSeconds / 3600, 24)), 2, 0) + ":" +;
      StrZero(INT(Mod(nSeconds / 60, 60)), 2, 0) + ":" +;
      StrZero(INT(Mod(nSeconds, 60)), 2, 0)

//------------------------------------------------------------------------------
STATIC FUNCTION TimeAsSeconds( cTime )
/*-----------------------------------------------------------------------------------------------*/
   RETURN VAL(cTime) * 3600 + VAL(SUBSTR(cTime, 4)) * 60 +;
          VAL(SUBSTR(cTime, 7))

 

Re: mi funcion sumar horas

Posted: Thu Jun 19, 2014 11:46 am
by goosfancito
yo use otra:

ElapTime

:)