Sempre que precisamos transforma a data por extenso gera um pouco de dificuldade, vou compartilhar uma função que eu crie para ajudar a criar a data por extenso com diversas formatações.

Algumas possibilidades são.

 

#Include "Protheus.ch"

/*/{Protheus.doc} SPDtExt
Retorna a data informada por extenso
@author Rafael Gonçalves
@since Mar|2020
@version 1.0
    @param 
        dData, data que será considerada
        lDiaExt, se retorna o dia por extenso
        lMesExt, se retorna o Mes por extenso
        lAnoExt, se retorna o Ano por extenso

    @example
    u_SPDTEXT(dDataBase) //13 de Março de 2020
    u_SPDTEXT(dDataBase,.T.) //Treze de Março de 2020
    u_SPDTEXT(dDataBase,.T.,.F.) //Treze de 03 de 2020
    u_SPDTEXT(dDataBase,.T.,.F.,.T.) //Treze de 03 de Dois Mil e Vinte
    u_SPDTEXT(dDataBase,.F.,.T.,.T.) //13 de Março de 2020
    @see https://sempreju.com.br
/*/
user function SPDTEXT(dData, lDiaExt, lMesExt, lAnoExt)  
Local cRetDat as Character
Default lDiaExt := .F.
Default lMesExt := .T.
Default lAnoExt := .F.

cRetDat := ""
If lDiaExt //convert dia por exenso
    cRetDat += capital(extenso(day(dData), .t.))
else
    cRetDat += cValToChar(day(dData)) 
Endif
cRetDat += " de "  

If lMesExt //convert dia por exenso
    cRetDat += mesextenso(dData) 
else
    cRetDat += cValToChar(Month(dData)) 
Endif
cRetDat += " de "

If lAnoExt //convert dia por exenso
    cRetDat += capital(extenso(year(dData), .t.))
else
    cRetDat += cValToChar(year(dData)) 
Endif
return cRetDat  

O código fonte desse e outros exemplos podem ser encontrados em nosso git.

 

Post interessantes:

Aprenda a instalar o Protheus aqui.

Aprenda a mudar o logo do sistema aqui.

Aprenda a diferença de path relativo e absoluto aqui.

Dúdivas e sugestões, entre em contato.

Obrigado e até a próxima!


0 comentário

Deixe um comentário