Buscar

RETORNA O TOTAL DE HORAS/MINUTOS ENTRE DOIS DATETIME

Código

{
* Autor: Marcos Calixto
* Data: 10/11/2010
* Responsavel pelo retorno do total de horas entre duas datas
* Onde dt1 é a data inicio e dt2 é a data fim
}


FUNCTION TotalHoras(dt1,dt2   :     TDateTime):String;// 10/11/2010
var
      h1,h2,ht          :     Integer;
      m1,m2,mt          :     Integer;
      d1,d2,mts         :     String;
      m1s,m2s           :     String;
      td1,td2           :     Integer;
begin

      if ( dt1 > 0 ) AND ( dt2 > 0 ) then
      begin
            if dt2 > dt1 then
            begin

                  d1    :=    FormatDateTime('dd',dt1);
                  d2    :=    FormatDateTime('dd',dt2);
                  td1   :=    strtoint(d2) - strtoint(d1);
                  if td1 > 0 then
                  begin
                        td1 := td1 * 24;
                  end;
                  h1    :=    strtoint(FormatDateTime('HH',dt1));
                  m1s   :=    (FormatDateTime('HH:MM',dt1));
                  m1    :=    strtoint(copy(m1s,4,2));
                  h2    :=    strtoInt(FormatDateTime('HH',dt2));
                  m2s   :=    (FormatDateTime('HH:MM',dt2));
                  m2    :=    strtoint(copy(m2s,4,2));
                  ht    :=    ((h2+td1) - h1 );

                  if m1 > m2 then
                  begin
                        ht    :=    ht - 1;
                        mt    :=  60 - ( m1 - m2);
                  end else
                        begin
                              m1    :=    60 - m1;
                              m2    :=    60 - m2;
                              mt    :=    ( m1 - m2 );
                        end;

               
                  if Length(inttostr(mt)) = 1 then
                  begin
                        mts   := '0'+inttostr(mt);
                  end else
                        begin
                              mts   :=    inttostr(mt);
                        end;
                  result := inttostr(ht)+':'+(mts)+':00';

            end else
                  begin
                        result      :=    'A data Inicio não pode ser maior que a data término';
                  end;
      end else
            begin
                  result      :=    'Os dois campos são obrigatórios!';
            end;

end;
 

Publicidade

Vote na dica




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


Detalhes da dica

Categoria: Data e hora
Adicionada dia: 10/11/10
Por: Marcos Naves Calixto
Visualizada: 3720 vezes

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