GARANTIR DESCONTO

Fórum Diferença entre horários... #284374

10/06/2005

0

E aí galera! Tô com o seguinte problema: Queria mostrar em um Label a diferença entre duas váriaveis TDateTime com a seguinte formatação: ´X dias, X horas, X minutos e X segundos´. Fiz o seguinte código no OnClick de um botão para testar:

procedure TForm1.Button1Click(Sender: TObject);
var data1,data2:TDateTime;
begin
   data1 := StrToDateTime(´10/06/2005 10:00:00´);
   data2 := StrToDateTime(´10/06/2005 11:10:22´);
   Label1.Caption := FormatDateTime(´dd "dias", hh "horas", nn "minutos e " ss " segundos"´,data2-data1);
end;


O resultado que eu gostaria de obter seria: ´0 (zero) dias, 1 hora, 10 minutos e 22 segundos´, mas aqui quando eu rodo o Label mostra o seguinte: ´30 dias, 1 hora, 10 minutos e 22 segundos´.

Se alguém puder me ajudar! Até!


Delphi32

Delphi32

Responder

Posts

10/06/2005

Massuda

No seu exemplo, o resultado de data2-data1 resulta em um valor maior que zero e menor que um (por exemplo, 0.042).

Quando você pede para formatar essa diferença usando...
FormatDateTime(´dd "dias", hh "horas", nn "minutos e " ss " segundos"´,data2-data1)
... o ´dd´ significa o dia da data e não o total de dias (são coisas diferentes). No Delphi, a data 0 corresponde ao dia 30/12/1899, daí estar saindo ´30 dias´ no seu exemplo.

Para ter o resultado que você espera, faça algo assim:
Format(´¬d dias ¬s´, [
  Trunc(data2-data1), 
  FormatDateTime(´hh "horas", nn "minutos e " ss " segundos"´,data2-data1)
])



Responder

Gostei + 0

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

Aceitar