Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

EderDias

Contar Horas Num período

Recommended Posts

Ola...Pessoal

 

Estou num dilema.....preciso montar um aplicativo que conta horas, mas nem imagino como faz... http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

 

Exemplo:

 

data saida: 20/06/2007 as 20:00 horas

data chegada 25/06/2007 as 10:00 horas

Alguem poderia me ajudar??

 

Grato

:unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria um esquema de ponto de funcionários???

 

você quer saber como gravar a data e hora num DB isso?

se for faz assim:

 

qryDATA.value:= Now;qry.post;

qualquer coisa poste aki, pq naum entendi direito o que quer dizer com "conte as horas..."

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pequeno exemplo:

 

procedure TForm1.BitBtn1Click(Sender: TObject);var	dataHora1, dataHora2: TDateTime;	total: double;	numDias: integer;beginnumDias:=0;dataHora1:=StrToDateTime('20/06/2007 20:00:00');dataHora2:=StrToDateTime('25/06/2007 10:00:00');total:=dataHora2 - dataHora1;while total >= 1 do	begin	Inc(numDias);	total:=total - 1;	end;if numDias > 0 then	begin	if total > 0 then		ShowMessage(IntToStr(numDias) + ' dia(s) + ' + TimeToStr(total))	else		ShowMessage(IntToStr(numDias) + ' dia(s)');	endelse	ShowMessage(TimeToStr(total));end;

No caso pode mudar e adaptar de acordo com sua necessidade...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente eu naum tinha entendido a pergunta do amigo EderDias, mais se ele quer saber a diferença em horas, está mais do que resolvido pelo tópico do Márcio ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

var

dataHora1, dataHora2: TDateTime;

total: double;

numDias: integer;

begin

numDias:=0;

dataHora1:=StrToDateTime('20/06/2007 20:00:00');

dataHora2:=StrToDateTime('25/06/2007 10:00:00');

total:=dataHora2 - dataHora1;

while total >= 1 do

begin

Inc(numDias);

total:=total - 1;

end;

if numDias > 0 then

begin

if total > 0 then

ShowMessage(IntToStr(numDias) + ' dia(s) + ' + TimeToStr(total))

else

ShowMessage(IntToStr(numDias) + ' dia(s)');

end

else

ShowMessage(TimeToStr(total));

end;

Marcio...mto grato...carinha o que eu queria na verdade.....é mais ou menos isto ...mais me enrrolei todo......tentei adptar o seu codigo....shiii me perdi....

 

é assim:

 

tenho um:

 

edit=data de saida e outro edit=hora de saida

um edit=data de chegada e um edit=hora de chegada

o resultado eu gostaria que desse somente em horas não em dias.....

 

exemplo: 25/06/2007 as 20:00

26/06/2007 as 12:00

total: 14:00

(somente horas total)....

Mto Grato pela ajuda..pessoal..

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Multiplica o número de dias por 24 e soma com as horas...

Hugo perdão a ignorância...fiz o que você me pediu...mas não consegui corretamente....pois o resultado deu: 24,15625 (o 24 ta certo equivale a um dia....mas o 15625 deveria ser 3 horas :(

procedure TForm1.Button1Click(Sender: TObject);vardataHora1, dataHora2: TDateTime;total: double;numDias: integer;htotal:double;beginnumDias:=0;dataHora1:=StrToDateTime('25/06/2007 22:00:00');dataHora2:=StrToDateTime('27/06/2007 01:45:00');total:=dataHora2 - dataHora1;while total >= 1 dobeginInc(numDias);total:=total - 1;end;htotal:=((numdias*24) + (total));label1.caption:=floattostr((htotal))end;

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

para isso fica mais facil fazer assim:

 

var  DataIni,DataFinal: TDateTime;  DiaH,Hora: Double;begin  DataIni:=StrToDateTime('20/06/2007 10:00:00');  DataFinal:=StrToDateTime('21/06/2007 20:00:00');  ShowMessage(IntToStr(HoursBetween(DataIni,DataFinal)));

ps: Declare DateUtils na uses do form

Compartilhar este post


Link para o post
Compartilhar em outros sites

var

DataIni,DataFinal: TDateTime;

DiaH,Hora: Double;

begin

 

DataIni:=StrToDateTime('20/06/2007 10:00:00');

DataFinal:=StrToDateTime('21/06/2007 20:00:00');

ShowMessage(IntToStr(HoursBetween(DataIni,DataFinal)));

 

 

ps: Declare DateUtils na uses do form

amigão...perdão mais meu delphi é ainda o 4...e não tem esta função. DateUtils. :(

 

[Fatal Error] Unit1.pas(6): File not found: 'DateUtils.dcu'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como que você não tem a unit, criei uma função que vai converter tudo para segundos a diferença, e depois disto encontrar a hora, minuto e segundo...

 

 

Função:

 

function Tempo(data1, data2: TDateTime): string;var	hora, minuto, segundo: integer;	ret: string;beginif data1 < data2 then	segundo:=Round(86400 * (data2 - data1))  else	segundo:=Round(86400 * (data1 - data2));hora:=segundo div 3600;segundo:=segundo - (hora * 3600);minuto:=segundo div 60;segundo:=segundo - (minuto * 60);if hora > 0 then	begin	if Length(IntToStr(hora)) > 2 then		ret:=IntToStr(hora)	else		ret:=FormatFloat('00',hora);	endelse	ret:=FormatFloat('00',0);ret:=ret + ':' + FormatFloat('00',minuto) + ':' + FormatFloat('00',segundo);Tempo:=ret;end;

Para implementar:

 

procedure TForm1.BitBtn1Click(Sender: TObject);var	dataHora1, dataHora2: TDateTime;begindataHora1:=StrToDateTime('20/06/2007 20:00:00');dataHora2:=StrToDateTime('25/06/2007 10:00:00');ShowMessage(Tempo(dataHora1,dataHora2));end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

procedure TForm1.Button1Click(Sender: TObject);vardataHora1, dataHora2: TDateTime;begindataHora1:=StrToDateTime('25/06/2007 20:00:00');dataHora2:=StrToDateTime('26/06/2007 01:17:00');edit1.text:=(Tempo(dataHora1,dataHora2));end;

R. Valeu Marcio isto mesmo http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Pessoal....só pra fechar este topico..alias... não sei se continuo aqui mesmo ou abro outro topico...se vcs acharem melhor !!Seguinte.....seguindo este raciocínio.....tenho que achar destas horas..por exemplo 27,30 horas quantas são diurnas e quantas são noturnas(dentro deste exemplo que vcs me ajudaram), sendo que devo considerar noturnas entre 22 horas até 05 horas do outro dia ...e o restante diurnas.Alguem poderia dar continuidade a este processo...preciso mto e não entendo mta coisa??? Pessoal...mto Grato pela ajuda. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para fazer isto vai precisar pegar cada horário e verificar, não vai conseguir otimizar tanto, precisa construir um algoritmo que vai ler da datahora inicial até a datahora final e verificar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para fazer isto vai precisar pegar cada horário e verificar, não vai conseguir otimir tanto, precisa construir um algoritmo que vai ler da datahora inicial até a datahora final e verificar...

R...imaginei que era mesmo dificil... http://forum.imasters.com.br/public/style_emoticons/default/upset.gif ...to ferrado....

se alguem poder me ensinar!!!....mto grato

 

valeu Marcio

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.