Eolo
Código: Selecionar todos
* Requisitos:
set century on
set date british
horas no formato "hh:mm" e no intervalo "00:00 a "23:59"Código: Selecionar todos
* Retorno:
+/- dias , horas : minutos
Código: Selecionar todos
* Exemplos:
dia1:=ctod("29/03/2007"), hora1:="17:30"
dia2:=ctod("29/03/2007"), hora2:="18:34"
?INTERVALO(dia1,hora1,dia2,hora2) //-> "+0,01:04"
dia1:=ctod("29/03/2007"), hora1:="17:30"
dia2:=ctod("29/03/2007"), hora2:="17:30"
?INTERVALO(dia1,hora1,dia2,hora2) //-> "0,00:00"
dia1:=ctod("29/03/2007"), hora1:="17:30"
dia2:=ctod("28/03/2007"), hora2:="10:46"
?INTERVALO(dia1,hora1,dia2,hora2) //-> "-1,06:44" Código: Selecionar todos
function INTERVALO(d1,h1,d2,h2)
priv d:=0,h:=0,m:=0,s,si
si=iif(d2>d1 .or. (d2=d1 .and. h2>h1),1,0)
h1=(val(left(h1,2))*60)+val(right(h1,2))
h2=(val(left(h2,2))*60)+val(right(h2,2))
if si=1
d2=((d2-d1)*1440)+h2
d1=h1
s=d2-d1
else
d1=((d1-d2)*1440)+h1
d2=h2
s=d1-d2
endi
do whil .t.
if s>59
if (s/60)>24
d=int(s/60/24)
s=s-(d*24*60)
else
h=int(s/60)
s=s-(h*60)
if h=24
h=0
d=d+1
endi
endi
else
m=s
exit
endi
endd
s=iif((d+h+m)=0,"",iif(si=0,"-","+"))
retu s+alltrim(str(d))+","+strzero(h,2)+":"+strzero(m,2)
