Buscar

Quantidade de horas mesmo com dias diferentes

Código

procedure TForm1.duracao;
var
dta_inicio:tdate;
hra_inicio:ttime;
dia :integer;
dias : real;
horas,min,seg,residuo:Ttime;
begin
    if CDSF.FieldByName('FHM_DATA_SAIDA').AsDateTime =
       CDSF.FieldByName('FHM_DATA_RETORNO').AsDateTime then
        begin
                dta_inicio:= CDSFa.FieldByName('FHM_DATA_SAIDA').AsDateTime;
                hra_inicio:= CDSF.FieldByName('FHM_HORA_SAIDA').AsDateTime ;
                CDSF.FieldByName('FHM_DURACAO_A').AsDateTime :=
                        CDSF.FieldByName('FHM_HORA_RETORNO').AsDateTime - hra_inicio;
                label16.Caption := '';
        end
    else
       begin
        horas := strtotime('23:59'); residuo := strtotime('00:01');
        dias :=  CDSF.FieldByName('FHM_DATA_RETORNO').AsDateTime -
                 CDSF.FieldByName('FHM_DATA_SAIDA').AsDateTime;
        dia := strtoint(floattostr(dias - 1));
        min := ((horas + residuo) - CDSF.FieldByName('FHM_HORA_SAIDA').AsDateTime);

        if CDSF.FieldByName('FHM_HORA_RETORNO').AsDateTime >
           CDSF.FieldByName('FHM_HORA_SAIDA').AsDateTime then
           begin
            inc(dia);
           end;
        seg :=  CDSF.FieldByName('FHM_HORA_RETORNO').AsDateTime;
        CDSF.FieldByName('FHM_DURACAO_A').AsDateTime := {formatdatetime('hh:mm',}(min+seg);
        if dia <> 0 then
         begin
           if dia > 1 then
             label16.Caption := '+ '+inttostr(dia)+' dias'
           else
             label16.Caption := '+ '+inttostr(dia)+' dia';
           CDSF.FieldByName('FHM_NUM_DIAS').AsInteger := dia;
         end
        else
           label16.Caption := '';
      end;
end;

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Data e hora
Adicionada dia: 08/07/10
Por: Paulo Afonso Cecconello
Visualizada: 3203 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009