1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

Duvida Transformar número inteiro em Anos, Meses e Dias

Discussão em 'Progress 4GL' iniciado por alexandrezakarias, Março 17, 2016.

  1. alexandrezakarias

    alexandrezakarias Membro Participativo

    Bom Dia, tenho um número inteiro, por exemplo 3727, e preciso saber quantos anos, meses e dias ele equivale.

    Por exemplo, no Excel, existe a função oculta chamada "DATADIF" que ficaria assim:
    =datadif(0; 3727;"Y") & " anos, " & datadif(0;3727 ; "YM" ) & " meses e " & datadif(0 ;3727 ; "MD" ) & " dias"

    Que daria: "10 anos, 2 meses e 15 dias".

    E no progress? alguém conhece alguma função? alguém já precisou e tem algum exemplo?

    Obrigado! tenham um ótimo dia!
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    MESSAGE STRING(DATE(2457466),"99/99/9999")
    VIEW-AS ALERT-BOX INFO BUTTONS OK.

    Você verá a data de hoje: 17/03/2016
  3. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    MESSAGE STRING(DAY(DATE(2457466))) + "/" + STRING(MONTH(DATE(2457466))) + "/" + STRING(YEAR(DATE(2457466)))
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
  4. alexandrezakarias

    alexandrezakarias Membro Participativo

    opa, creio que não deixei bem claro, o número que citei por exemplo (3727), se refere a quantos dias o empregado está trabalhando conosco.
    Mas gostaria que fosse exibido ao invés de dias, converter esse tempo em anos, meses e dias, ou seja 3727 dias desde a admissão do funcionário, é igual a 10 anos, 2 meses e 15 dias de tempo de casa entendes?
    No Excel, tranquilo de fazer, mas no progress não dei jeito.
    obrigado!
  5. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Eu já fiz essa função, vou passar pra vc...aguenta ai
  6. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Eis o código:

    Código:
    DEF VAR QtdeDias AS INTEGER INIT 3727.
    DEF VAR Dias AS INTEGER.
    DEF VAR Meses AS INTEGER.
    DEF VAR Anos AS INTEGER.
    
    RUN getData(INPUT QtdeDias, OUTPUT Dias,OUTPUT Meses,OUTPUT Anos).
    
    MESSAGE  Anos "Anos" SKIP Meses "Meses e " SKIP Dias "Dias"
        VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
    PROCEDURE getData.
        DEF INPUT PARAMETER QtdeDias AS INTEGER.
        DEF OUTPUT PARAMETER Dias AS INTEGER.
        DEF OUTPUT PARAMETER Meses AS INTEGER.
        DEF OUTPUT PARAMETER Anos AS INTEGER.
        DEF VAR QtdeDiasAno AS DECIMAL INIT 365.25. /* (3 Anos de 365 dias + 1 Ano de 366 dias) / 4 */
        DEF VAR QtdeDiasMes AS DECIMAL INIT 30.4375 /* Divisão da quantidade média de dias do ano (365.25) por 12 meses */.
    
        Anos = TRUNCATE(QtdeDias / QtdeDiasAno,0).
        Meses = TRUNCATE((QtdeDias - (Anos * QtdeDiasAno)) / QtdeDiasMes,0).
        Dias = QtdeDias - (Anos * QtdeDiasAno) - (Meses * QtdeDiasMes).
    END PROCEDURE.
    
    reissobr curtiu isso.

Compartilhe esta Página