Data por Extenso em AdvPL

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:

Data por Extenso

Data por Extenso

Bom pessoal, por hoje é só.
Abraços e até a próxima.

Dan Atilio (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

4 Responses

  1. Caio Augusto disse:

    Simples, porém muito útil! Obrigado por compartilhar…

  2. Obrigado Daniel, me ajudou muito!

Deixe uma resposta