Fórum Ref. Calculo de horas #229524

03/05/2004

0

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

Responder

Posts

03/05/2004

Djjunior

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


Responder

Gostei + 0

04/05/2004

Tinorj

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;



Responder

Gostei + 0

04/05/2004

Rogerio_amorim

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar