Função que converte hora para valor em AdvPL

Olá pessoal…

Hoje vou mostrar uma função que desenvolvi que converte hora para valor numérico em AdvPL.

AdvPL

AdvPL

Eu já havia desenvolvido uma rotina que convertesse valor para hora em AdvPL (saiba mais clicando aqui), agora fiz a função que converte hora para valor numérico, por exemplo 01:30, equivale à 1,50.

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zHr2Val
Função que converte Hora para Valor
@author Atilio
@since 16/02/2017
@version 1.0
@param cHora, characters, Parâmetro que contém o conteúdo da hora e minutos (por exemplo, 100:50)
@param cSep, characters, Parâmetro que contém o separador da hora (por exemplo, ':' ou 'h')
@type function
@example u_zHr2Val("01:30", ":") --> 1,50
u_zHr2Val("01h45", "h") --> 1,75
/*/

User Function zHr2Val(cHora, cSep)
	Local aArea   := GetArea()
	Local nAux    := 0
	Local cMin    := ""
	Local nValor  := 0
	Local nPosSep := 0
	Default cHora := ""
	Default cSep  := ':'
	
	//Se tiver a hora
	If !Empty(cHora)
		nPosSep := RAt(cSep, cHora)
		nAux    := Val(SubStr(cHora, nPosSep+1, 2))
		nAux    := Int(Round((nAux*100)/60, 0))
		cMin    := Iif(nAux > 10, cValToChar(nAux), "0"+cValToChar(nAux))
		nValor  := Val(SubStr(cHora, 1, nPosSep-1)+"."+cMin)
	EndIf
	
	RestArea(aArea)
Return nValor

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.

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

Dan_Atilio
Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas.

Deixe uma resposta