EtapTime me da un resultado no esperado.

Post Reply
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

EtapTime me da un resultado no esperado.

Post 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?
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: EtapTime me da un resultado no esperado.

Post by karinha »

João Santos - São Paulo - Brasil
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Re: EtapTime me da un resultado no esperado.

Post by goosfancito »

bueno...
a construir otra funcioncita...

gracias Karina
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Re: EtapTime me da un resultado no esperado.

Post 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))

 
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: EtapTime me da un resultado no esperado.

Post 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.
Un saludo

Manuel
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Re: EtapTime me da un resultado no esperado.

Post 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.
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
Post Reply