Calculo de Horas
Pessol tenho um dúvida com relação a horas, para fazer os calculos utilizo no banco de dados (firebird 2.1) o tipo date ou string?
Tem como eu fazer assim?
Valor da hora = 30,00
Total de horas = 2:15
Valor Total = 67,50.
Como eu faço para a hora 2:15 (time) se tornar 2,25 (float), com isso consigo fazer o calculo tranquilo.
30,00 x 2,25 = 67,50.
Alguem me ajuda?
Tem como eu fazer assim?
Valor da hora = 30,00
Total de horas = 2:15
Valor Total = 67,50.
Como eu faço para a hora 2:15 (time) se tornar 2,25 (float), com isso consigo fazer o calculo tranquilo.
30,00 x 2,25 = 67,50.
Alguem me ajuda?
Betofrasson
Curtidas 0
Respostas
Lehapan
16/04/2009
Caro betofrasson,
segue abaixo o código que pode te ajudar.
espero ter ajudado.
segue abaixo o código que pode te ajudar.
{ Converte a hora para HORA-60 ou HORA-100, de acordo com o parâmetro }
function ConvHoras(intHora, intBase: integer): integer;
var
strHora: string;
siHr, siMin: smallint;
begin
{Considera que ´intHora´ tera o formato ´hhmm´.
´intBase´ = 100 - converte para hora CENTESIMAL
´intBase´ = 60 - converte para hora SEXAGESIMAL }
strHora := ColocaZero( intHora, 8 );
siHr := StrToInt( Copy(strHora, 1, 6) );
siMin := StrToInt( Copy(strHora, 7, 2) );
if intBase = 100 then
siMin := Trunc( RoundTo(siMin * 1.6667, 0) )
else
siMin := Trunc( RoundTo(siMin / 1.6667, 0) )
;
Result := StrToInt( ColocaZero(siHr, 6) + ColocaZero(siMin, 2) );
end;
function ColocaZero(iValor, intTam: integer): string;
var
strValor: string;
begin
strValor := Trim( IntToStr(intValor) );
strValor := PreencheInicio( strValor, intTam, ´0´ );
Result := strValor;
end;
function PreencheInicio(strString: String; intQtde: Integer; C: Char): string;
var
x: integer;
StrAux: string;
begin
if Length(strString) > intQtde then
Result := Copy( strString, (Length(strString)-intQtde) + 1 , Length(strString) )
else
begin
StrAux := ´´;
for x:= Length(strString) to intQtde - 1 do
begin
StrAux := StrAux + C;
end;
Result := StrAux + strString;
end
;
end;
espero ter ajudado.
GOSTEI 0
Betofrasson
16/04/2009
lehapan.. vim acabar de dizer que já consegui um calculo para isso..
mas muito obrigado mesmo pela atenção..
pode ser que ajude mais alguém, segue o código:
falow..
mas muito obrigado mesmo pela atenção..
pode ser que ajude mais alguém, segue o código:
function ValorHora( ValorHora: Double; TotalHora: TDateTime ): Double; var fHora, fMinuto: TDateTime; fValorHora, fValorMinuto, ValorTotal: Double; begin fHora := StrToFloatDef( FormatDateTime( ´hh´, TotalHora ), 0 ); fMinuto := StrToFloatDef( FormatDateTime( ´mm´, TotalHora ), 0 ); fValorHora := ValorHora*fHora; fValorMinuto := (ValorHora/60)*fMinuto; ValorTotal := fValorHora + fValorMinuto; Result := ValorTotal; end;
falow..
GOSTEI 0
Marco Salles
16/04/2009
Não seria so isto ???????
Vai dar os mesmo 67,50.
var Ht:TTime; begin Ht:=StrtoTime(´02:15:00´); Showmessage(FloattoStr(30*24*Ht)); end;
Vai dar os mesmo 67,50.
GOSTEI 0