Ref. Calculo de horas

Delphi

03/05/2004

Ola Galera, estou criando um programa para uma empresa de motoboys, e gostaria de saber como faço para calcular o periodo de horas, hora inicial do servico até a hora final, o total das hopras vai ter um custo.
Alguem poderia me ajudar como faço isso, se conhecerem algum exemplo de programa na rede por favor me indiquem.

Grato


Ricardo.cabral

Ricardo.cabral

Curtidas 0

Respostas

Djjunior

Djjunior

03/05/2004

basicamente é horafinal - horainicial;
o problema é se essa soma der mais de 23:59:59 ai ele ´volta´ a 0:00:00, dê uma pesquisada no forum que isso já foi discutido


GOSTEI 0
Tinorj

Tinorj

03/05/2004

Para o exemplo abaixo, use a seguinte estrutura para o Form:

TForm1 = class(TForm) MaskEdit1: TMaskEdit; MaskEdit2: TMaskEdit; Label1: TLabel; Label2: TLabel; Button1: TButton; Panel1: TPanel;


Ex:
{No caso de vc usar o Delphi6, use a unit DateUtils e ignore as função HourOf, MinuteOf e SecondOf abaixo listadas}
function HourOf(const AValue: TDateTime): Word;
var
  LMinute, LSecond, LMilliSecond: Word;
begin
  DecodeTime(AValue, Result, LMinute, LSecond, LMilliSecond);
end;

function MinuteOf(const AValue: TDateTime): Word;
var
  LHour, LSecond, LMilliSecond: Word;
begin
  DecodeTime(AValue, LHour, Result, LSecond, LMilliSecond);
end;

function SecondOf(const AValue: TDateTime): Word;
var
  LHour, LMinute, LMilliSecond: Word;
begin
  DecodeTime(AValue, LHour, LMinute, Result, LMilliSecond);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  HoraI, HoraF, HorasTrabalhadas: TTime;
begin
  HoraI := StrToTime(MaskEdit1.Text);
  HoraF := StrToTime(MaskEdit2.Text);
  HorasTrabalhadas := HoraF - HoraI;

  Panel1.Caption := Format(´Total de Horas Trabalhadas: ¬d:¬d:¬d´,
                           [HourOf(HorasTrabalhadas),
                            MinuteOf(HorasTrabalhadas),
                            SecondOf(HorasTrabalhadas)]);
end;



GOSTEI 0
Rogerio_amorim

Rogerio_amorim

03/05/2004

Se vc estiver trabalhando com campos que permitam armazenar data e hora no mesmo campo, tipo timestamp do Interbase.

Tente isto:

adicione um campo calculado na sua table ou query editável e no evento CalcFields do componente coloque:

ex: IBQUERY2.FieldByName(´TEMPOA´).VALUE := (IBQUERY2.FieldByName(´DATA_SAIDA´).value - IBQUERY2.FieldByName(´DATA_ENTRADA´).value) * 24;

e vc mostraria o resultado em um DBtext, isso em horas, claro !


Rogério Amorim


GOSTEI 0
POSTAR