21/11/2005

Alguem poderia me ajudar

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


[color=red:7a28f74975][b:7a28f74975]Tópico bloqueado![/b:7a28f74975][/color:7a28f74975]
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


Mmcamilo

Respostas

21/11/2005

Thomaz_prg

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

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.


Responder Citar