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

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

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação