Array
(
)

Alguem poderia me ajudar

Mmcamilo
   - 21 nov 2005

Olá amigos Delphianos, minha dificuldade continua sem solução alguem poderia me dar um ajuda ou ideia preciso calcular a diferença em horas entre duas datas diferentes exemplo:

Entrada
20/11/2005 às 23:26:54

Saída
21/11/2005 às 00:16:00

Se eu fizer esta consulta às 23:50:00 do dia 20/11/2005 o resultado apresentado é: 23:23:43

quando o Resultado esperado seria: 00:49:00

Quando calculo a diferença dentro do mesmo dia dá certo, porem, se o relógio passa para 00:00:01 do dia seguinte por exemplo o resultado fica errado...

Gostaria da ajuda de vocês, se alguem tiver uma função ou procedure ou ideia ou qualquer coisa que possam me ajudar, agradeço antecipadamente.

Até Breve!

Márcio M. Camilo


Tópico bloqueado!
Não está de acordo com as Regras de Conduta do fórum:
1º) título não está de acordo com a dúvida ([url=http://forum.clubedelphi.net/viewtopic.php?p=17019#1d]cláusula 1d[/url]);
2º) duplicidade - http://forum.clubedelphi.net/viewtopic.php?t=70546 ([url=http://forum.clubedelphi.net/viewtopic.php?p=170192]cláusula 2)[/url].

Sandra/Moderação


Thomaz_prg
   - 21 nov 2005

Sabendo-se que, se fizermos uma substração de datas a diferença é dada em dias, poderiamos ter o seguinte:

#Código


var
QtdDias:Integer;
Sobra:Integer;

QtdDias := DataF - DataI
if HoraF < HoraI then begin //*
QtdDIas := QtdDias-1; //*
Sobra := HoraI + 24 - Horaf; //*
end //*
else if HoraF > HoraI then //*
Sobra := Horaf-HoraI; //*

Dif_Horas := QtdDias * 24 + Sobra;


Bom, esse foi um exemplo simplificado... digo isso porque, o exemplo que coloquei está considerando apenas as Horas, ou seja se tiver como hora inicial 20:20:50 e Hora final 23:10:15 dessa forma está sendo considerado apenas 20:00:00 e 23:00:00. Basta implementar o que já foi mostrado (nos trechos onde tem //* no final), aproveitando a idéia mostrada, para fazer o cálculo levando-se em conta minutos e segundos.