Calcular tempo de fabricação entre duas datas/horas
olá pessoal
Tenho no meu sistema uma tabela com a seguinte estrutura:
#CD_FAB (integer)
DT_INI (date)
HR_INI (time)
DT_FIM (date)
HR_FIM (time)
...
Preciso saber o tempo de fabricação que é a diferença de DT_INI/HR_INI e DT_FIM/HR_FIM, observando que eu posso iniciar a fabricação hj e terminar em mais de um dia, ou seja, pode levar um ou varios dias.
qual a meneira mais simples e que retorna um resultado rápido ?
obrigado
Diogo
Tenho no meu sistema uma tabela com a seguinte estrutura:
#CD_FAB (integer)
DT_INI (date)
HR_INI (time)
DT_FIM (date)
HR_FIM (time)
...
Preciso saber o tempo de fabricação que é a diferença de DT_INI/HR_INI e DT_FIM/HR_FIM, observando que eu posso iniciar a fabricação hj e terminar em mais de um dia, ou seja, pode levar um ou varios dias.
qual a meneira mais simples e que retorna um resultado rápido ?
obrigado
Diogo

Diogoalles
Curtidas 0
Respostas

Marco Salles
29/09/2005
Da para brincar de muitas formas diferentes :
function calcularDiferencaHoras(Dataf,datai:Tdate;HoraF,HoraI:ttime):TDateTime; var DataHoraF,DataHoraI:TDateTime; begin DataHoraF:=DataF+HoraF; DataHorai:=DataI+HoraI; if DataHoraI > DataHoraF result:=DataHoraI - DataHoraF else result:=DataHoraF - DataHoraI; end;
procedure TForm1.Button1Click(Sender: TObject); var Dias:Integer; Total,Horas:Real; DT_INI :tdate; HR_INI :ttime; DT_FIM :tdate; HR_FIM :ttime; begin DT_FIM:=StrToDate(Edit1.text); HR_FIM:=StrToTime(Edit2.text); DT_INI:=StrToDate(Edit3.text); HR_INI:=StrToTime(Edit4.text); Total:=calcularDiferencaHoras(DT_FIM,DT_INI,HR_FIM,HR_INI); Dias:=Trunc(total); Horas:=total - Trunc(total); Showmessage(´Tem : ´+inttostr(dias)+´ Dias e Tem Horas : ´+timetostr(Horas)); end;
GOSTEI 0

Diogoalles
29/09/2005
olá pessoal
Esqueci de dizer que o resultado tem q ser em horas, minutos, segundos -mesmo se for um ou mais dias. Poderei ter resultados 99h,30m,44s
valeu
Diogo
Esqueci de dizer que o resultado tem q ser em horas, minutos, segundos -mesmo se for um ou mais dias. Poderei ter resultados 99h,30m,44s
valeu
Diogo
GOSTEI 0

Diogoalles
29/09/2005
Outra questão que gostaria de levantar,
puderam perceber que tenho 2 campos tipo DATE e 2 campos tipo TIME.
seria mais interessante eu criar um tipo TIMESTAMP ? (nunca utilizei, mas li. Como usá-lo e fazer o calculo da diferença? e como faço para ´quebrá-lo´ para ter a data e/ou hora separados?
utilizo FB 1.5
obrigado
Diogo
puderam perceber que tenho 2 campos tipo DATE e 2 campos tipo TIME.
seria mais interessante eu criar um tipo TIMESTAMP ? (nunca utilizei, mas li. Como usá-lo e fazer o calculo da diferença? e como faço para ´quebrá-lo´ para ter a data e/ou hora separados?
utilizo FB 1.5
obrigado
Diogo
GOSTEI 0

Marco Salles
29/09/2005
Esqueci de dizer que o resultado tem q ser em horas, minutos, segundos -mesmo se for um ou mais dias. Poderei ter resultados 99h,30m,44s
Amigo , a resposta ja foi dada ... Pois dias tem 24 Horas e so somar e fazer um algebrismo
Daqui ha pouco eu posto
GOSTEI 0

Marco Salles
29/09/2005
function calcularDiferencaHoras(Dataf,datai:Tdate;HoraF,HoraI:ttime):TDateTime; var DataHoraF,DataHoraI:TDateTime; begin DataHoraF:=DataF+HoraF; DataHorai:=DataI+HoraI; if DataHoraI > DataHoraF then result:=DataHoraI - DataHoraF else result:=DataHoraF - DataHoraI; end;
procedure TForm1.Button1Click(Sender: TObject); var Dias:Integer; Total,Horas:Real; QuerEmHorasMinutosSegundos:string; H,M,S,SS:Word; DT_INI :tdate; HR_INI :ttime; DT_FIM :tdate; HR_FIM :ttime; begin DT_FIM:=StrToDate(Edit1.text); HR_FIM:=StrToTime(Edit2.text); DT_INI:=StrToDate(Edit3.text); HR_INI:=StrToTime(Edit4.text); Total:=calcularDiferencaHoras(DT_FIM,DT_INI,HR_FIM,HR_INI); Dias:=Trunc(total); Horas:=total - Trunc(total); Decodetime(Horas,H,M,S,SS); H:=H+24*TRunc(dias); QuerEmHorasMinutosSegundos:=FormatFloat(´#00´,H)+´:´+FormatFloat(´00´,m) +´:´+FormatFloat(´00´,s); Showmessage(QuerEmHorasMinutosSegundos); end;
GOSTEI 0

Júnior Brito
29/09/2005
Boa Noite,
Gostaria de saber se tem alguma maneira de calcular somente dias úteis?
Desde já agradeço!
Gostaria de saber se tem alguma maneira de calcular somente dias úteis?
Desde já agradeço!
GOSTEI 0

Michel
29/09/2005
Olá Sir / Sra
Nós oferecemos nossos serviços para pessoas honestas que estão em necessidade de apoio financeiro ou atividades geradoras de renda e criar um futuro melhor com uma taxa de juros de 2% considerado.
Eu diria que estou pronto para dar ao indivíduo.
Oferecemos-lhe empréstimos entre particular, de 2.000 € para 10.000.000 € para termos muito simples.
Estou disponível e disposto a discutir todas as suas necessidades financeiras nas seguintes áreas:
-Empréstimos imobiliários
-Empréstimos de investimento
-Auto empréstimo
-Consolidação da dívida
-Linha de crédito
-Segundas hipotecas
-Resgate de crédito
-Empréstimos pessoais
Não hesite em contactar-nos se você estiver interessado, o período de reembolso entre um para cada ano de acordo com a soma emprestada.
Nossos termos de empréstimo são:
- Um formulário para preencher.
- Um acordo de empréstimo deve ser feita pelo nosso notário
- Nossos empréstimos estão sujeitos a juros de 2% ao ano.
- Nossos empréstimos são normalmente pagos por cheque ou transferência bancária.
Me contactado por mail: michelalbertplanq@outlook.fr
No refrão sério!
Nós oferecemos nossos serviços para pessoas honestas que estão em necessidade de apoio financeiro ou atividades geradoras de renda e criar um futuro melhor com uma taxa de juros de 2% considerado.
Eu diria que estou pronto para dar ao indivíduo.
Oferecemos-lhe empréstimos entre particular, de 2.000 € para 10.000.000 € para termos muito simples.
Estou disponível e disposto a discutir todas as suas necessidades financeiras nas seguintes áreas:
-Empréstimos imobiliários
-Empréstimos de investimento
-Auto empréstimo
-Consolidação da dívida
-Linha de crédito
-Segundas hipotecas
-Resgate de crédito
-Empréstimos pessoais
Não hesite em contactar-nos se você estiver interessado, o período de reembolso entre um para cada ano de acordo com a soma emprestada.
Nossos termos de empréstimo são:
- Um formulário para preencher.
- Um acordo de empréstimo deve ser feita pelo nosso notário
- Nossos empréstimos estão sujeitos a juros de 2% ao ano.
- Nossos empréstimos são normalmente pagos por cheque ou transferência bancária.
Me contactado por mail: michelalbertplanq@outlook.fr
No refrão sério!
GOSTEI 0

Natanael Ferreira
29/09/2005
Veja se esta dica lhe ajuda:
https://www.devmedia.com.br/dicas-contando-dias-uteis-entre-periodos/2416
https://www.devmedia.com.br/dicas-contando-dias-uteis-entre-periodos/2416
GOSTEI 0

Raphael Pacheco
29/09/2005
function calcularDiferencaHoras(Dataf,datai:Tdate;HoraF,HoraI:ttime):TDateTime; var DataHoraF,DataHoraI:TDateTime; begin DataHoraF:=DataF+HoraF; DataHorai:=DataI+HoraI; if DataHoraI > DataHoraF then result:=DataHoraI - DataHoraF else result:=DataHoraF - DataHoraI; end;
procedure TForm1.Button1Click(Sender: TObject); var Dias:Integer; Total,Horas:Real; QuerEmHorasMinutosSegundos:string; H,M,S,SS:Word; DT_INI :tdate; HR_INI :ttime; DT_FIM :tdate; HR_FIM :ttime; begin DT_FIM:=StrToDate(Edit1.text); HR_FIM:=StrToTime(Edit2.text); DT_INI:=StrToDate(Edit3.text); HR_INI:=StrToTime(Edit4.text); Total:=calcularDiferencaHoras(DT_FIM,DT_INI,HR_FIM,HR_INI); Dias:=Trunc(total); Horas:=total - Trunc(total); Decodetime(Horas,H,M,S,SS); H:=H+24*TRunc(dias); QuerEmHorasMinutosSegundos:=FormatFloat(´#00´,H)+´:´+FormatFloat(´00´,m) +´:´+FormatFloat(´00´,s); Showmessage(QuerEmHorasMinutosSegundos); end;
E como faz para calcular em dinheiro o valor do resultado das horas decorridas?
GOSTEI 0