EderDias 0 Denunciar post Postado Junho 28, 2007 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
Rodrigo Miss 1 Denunciar post Postado Junho 28, 2007 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
marcio.theis 3 Denunciar post Postado Junho 28, 2007 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
Hugo Slepicka 0 Denunciar post Postado Junho 28, 2007 Subtração ele quer rodrigo... Ele quer saber a diferença em horas entre uma data e outra... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Junho 28, 2007 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
EderDias 0 Denunciar post Postado Junho 28, 2007 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
Hugo Slepicka 0 Denunciar post Postado Junho 28, 2007 Multiplica o número de dias por 24 e soma com as horas... http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
EderDias 0 Denunciar post Postado Junho 28, 2007 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
Rodrigo Miss 1 Denunciar post Postado Junho 28, 2007 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
EderDias 0 Denunciar post Postado Junho 28, 2007 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
marcio.theis 3 Denunciar post Postado Junho 28, 2007 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
Rodrigo Miss 1 Denunciar post Postado Junho 28, 2007 Mto bom ... esse é o Márcio que eu conheço ... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
EderDias 0 Denunciar post Postado Junho 28, 2007 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
marcio.theis 3 Denunciar post Postado Junho 29, 2007 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
EderDias 0 Denunciar post Postado Junho 29, 2007 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
marcio.theis 3 Denunciar post Postado Junho 29, 2007 Todos aqui podemos lhe ajudar, começa a bolar e desenvolver, quando for surgindo dúvidas, coloque no fórum... Compartilhar este post Link para o post Compartilhar em outros sites