Olá pessoal…
Hoje irei mostrar uma função que criei que monta uma data em AdvPL na forma extensa, como por exemplo, 27/10/2014 se torna 27 de Agosto de 2014.
//Bibliotecas
#Include "Protheus.ch"
/*/{Protheus.doc} zDtExtenso
Retorna a data por extenso
@author Atilio
@since 27/08/2014
@version 1.0
@param dDataAtual, Data, Data que ficará em extenso
@param lAbreviado, Lógico, Define se a data será abreviada com números
@return cRetorno, Retorna a data por extenso
@example
u_zDtExtenso(dDataBase, .T.) //27 de Agosto de 2014
u_zDtExtenso(dDataBase, .F.) //Vinte e Sete de Agosto de Dois Mil e Quatorze
@see https://terminaldeinformacao.com/advpl/
/*/
User Function zDtExtenso(dDataAtual, lAbreviado)
Local cRetorno := ""
Default dDataAtual := dDataBase
Default lAbreviado := .F.
//Se for da forma abreviada, mostra números
If lAbreviado
cRetorno += cValToChar(Day(dDataAtual))
cRetorno += " de "
cRetorno += MesExtenso(dDataAtual)
cRetorno += " de "
cRetorno += cValToChar(Year(dDataAtual))
//Senão for abreviado, mostra texto completo
Else
cRetorno += Capital(Extenso(Day(dDataAtual), .T.))
cRetorno += " de "
cRetorno += MesExtenso(dDataAtual)
cRetorno += " de "
cRetorno += Capital(Extenso(Year(dDataAtual), .T.))
EndIf
Return cRetorno
Abaixo uma imagem de um alert da rotina:
Bom pessoal, por hoje é só.
Abraços e até a próxima.

Simples, porém muito útil! Obrigado por compartilhar…
Boa noite.
Eu que agradeço.
Um grande abraço.
Obrigado Daniel, me ajudou muito!
Boa tarde Jorge.
Eu que agradeço.
Um grande abraço.