Amigos:
Alguien tiene desarrollada una función para determinar la edad en Años, meses y dias que quiera compartir ?
Saludos
//----------------------------------------------------------------------------//
Function Ano_Mes_Dia(WDATA1,WDATA2)
// Cálculo da Idade
//----------------------------------------------------------------------------//
Local WTOTANOS:=WTOTMESES:=WTOTDIAS:=ctod(space(8))
Local WDIAANT:=WMESANT:=WANOANT:=WDATAANT:=ctod(space(8))
IF VAL( SUBS(DTOC(WDATA2),4,2) + SUBS(DTOC(WDATA2),1,2) ) >= ;
VAL( SUBS(DTOC(WDATA1),4,2) + SUBS(DTOC(WDATA1),1,2) )
WTOTANOS:= YEAR(WDATA2) - YEAR(WDATA1)
WTOTMESES:=MONTH(WDATA2) - ;
MONTH(WDATA1) - ;
IF(DAY(WDATA2)>=DAY(WDATA1),0,1)
ELSE
WTOTANOS:= (YEAR(WDATA2) - YEAR(WDATA1)) - 1
WTOTMESES:=( MONTH(WDATA2)+12 ) - ;
MONTH(WDATA1) - ;
IF(DAY(WDATA2)>=DAY(WDATA1),0,1)
ENDIF
IF DAY(WDATA2) >= DAY(WDATA1)
WTOTDIAS:=DAY(WDATA2)-DAY(WDATA1)
ELSE
IF MONTH(WDATA2)=1
WMESANT:= 12
WANOANT:= YEAR(WDATA2)-1
ELSE
WMESANT:= MONTH(WDATA2)-1
WANOANT:= YEAR(WDATA2)
ENDIF
DO CASE
CASE DAY(WDATA1)=31
DO CASE
CASE WMESANT=2
IF MOD(WANOANT,4)=0
WDIAANT:=29
ELSE
WDIAANT:=28
ENDIF
CASE WMESANT=4 .OR. WMESANT=6 .OR. WMESANT=9 .OR. WMESANT=11
WDIAANT:=30
OTHE
WDIAANT:=DAY(WDATA1)
ENDCASE
CASE DAY(WDATA1)=30
IF WMESANT=2
IF MOD(WANOANT,4)=0
WDIAANT:=29
ELSE
WDIAANT:=28
ENDIF
ELSE
WDIAANT:=DAY(WDATA1)
ENDIF
ENDCASE
WDATAANT:=CTOD( STRZERO(WDIAANT,2,0)+"/"+ ;
STRZERO(WMESANT,2,0)+"/"+ ;
STRZERO(WANOANT,4,0) )
WTOTDIAS:= WDATA2 - WDATAANT
ENDIF
RETURN ( ALLTRIM(STR(WTOTANOS,4,0)) +" Ano(s)") + ;
ALLTRIM(STR(WTOTMESES,2,0))+" MES(es) e "+ ;
ALLTRIM(STR(WTOTDIAS,2,0)) +" DIA(as)" )
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 52 guests