Page 1 of 1
EtapTime me da un resultado no esperado.
Posted: Tue Jun 24, 2014 12:11 pm
by goosfancito
Code: Select all
CHORA1= "8:59"
CHORA2 = "14:30"
------------------------------------------------------------------------------*
ElapTime(cHora1, cHora2) => "06:21:00"
Y debería de ser 5:21
Solucion?
Re: EtapTime me da un resultado no esperado.
Posted: Tue Jun 24, 2014 12:46 pm
by karinha
Re: EtapTime me da un resultado no esperado.
Posted: Tue Jun 24, 2014 12:57 pm
by goosfancito
bueno...
a construir otra funcioncita...
gracias Karina
Re: EtapTime me da un resultado no esperado.
Posted: Tue Jun 24, 2014 11:59 pm
by Willi Quintana
Hola Goosfancito....
Prueba con esto....
Code: Select all
//----------------------------------------------------------------------------------------------------
Function QTiempo(cTime1, cTime2)
local nSec1, nSec2, nSec3, nHora, nMinu
IF EMPTY(cTime1) .OR. EMPTY(cTime2) .OR. VAL(SUBSTR(cTime2,1,2)) * 3600 + VAL(SUBSTR(cTime2,4,2)) * 60 + VAL(SUBSTR(cTime2,7,2)) = 0
Return("")
EndIf
If VAL(SUBSTR(cTime1,1,2)) > VAL(SUBSTR(cTime2,1,2))
cTime2 := STRZERO( VAL(SUBSTR(cTime2,1,2)) + 24,2 ) + SUBSTR(cTime2,3,6)
EndIf
nSec1 := VAL(SUBSTR(cTime1,1,2)) * 3600 + VAL(SUBSTR(cTime1,4,2)) * 60 + VAL(SUBSTR(cTime1,7,2))
nSec2 := VAL(SUBSTR(cTime2,1,2)) * 3600 + VAL(SUBSTR(cTime2,4,2)) * 60 + VAL(SUBSTR(cTime2,7,2))
nSec3 := nSec2 - nSec1
nHora := nSec3 / 3600
nSec3 := nSec3 - INT(nHora) * 3600
nMinu := nSec3 / 60
nSec3 := nSec3 - INT(nMinu) * 60
Return(STRZERO(nHora,2) + ":" + STRZERO(nMinu,2) + ":" + STRZERO(nSec3,2))
Re: EtapTime me da un resultado no esperado.
Posted: Wed Jun 25, 2014 6:00 am
by Manuel Valdenebro
Según dice el manual sobre Elaptime, sus dos parámetros son 'Time() formatted character string'. La función ELAPTIME funciona perfectamente, siempre que los parámetros sean correctos. En este caso, como los parámetros no son correctos, lo que hay que arreglar son los parámetros y no hacer una nueva función. Si queremos una aplicación eficiente y rápida, una de las reglas sería usar las funciones del propio lenguaje y no reinventar la rueda.
Como el problema se genera por la necesidad de poner variables-horas con un sólo carácter, la solución podría ser la siguiente:
elaptime ( fValiHora(cHora1), fValiHora(cHora2) )
FUNCTION fValiHora (cTime)
IF AT(':', cTime)=2
cTime:= '0' + cTime
ENDIF
RETURN cTime
Otra cosa es, como en otro hilo dijo Biel, cuando tratamos fechas y hora. Para eso si es necesario un nueva función.
Re: EtapTime me da un resultado no esperado.
Posted: Wed Jun 25, 2014 10:34 am
by goosfancito
Gracias a todos.
Ya me genere una funcion y me soluciona lo que necesito,
con respecto a lo que me decis Manuel, pienso que si la función entonces habría que hacerla un poco mas flexible o por lo menos que
los pasos que me decis lo haga la propia función. Estaría bueno.
Gracias.