Página 1 de 1
Cálculo de dias entre duas datas
Enviado: 20 Mai 2012 19:32
por Vandi
Boa noite,
Preciso de uma rotina que calcule a diferença em dias entre duas datas.
Já encontrei alguma coisa na internet, mas não atendeu da forma que eu preciso.
Se alguém tiver alguma rotina e puder dispor aqui, ficarei muito agradecido.
Gilvandi
Cálculo de dias entre duas datas
Enviado: 20 Mai 2012 20:21
por Pablo César
Já encontrei alguma coisa na internet, mas não atendeu da forma que eu preciso.
Mas você aqui não está dizendo exatamente o que você quer...
Código: Selecionar todos
set date to British
Set century on
dData1:=CtoD("01/01/2012")
dData2:=CtoD("20/01/2012")
? (dData1-dData2)+1 // sem para subtrair, a primeira data tem que ser maior (a data mais antiga).
Veja se este exemplo resolve e senão explique melhor !
Cálculo de dias entre duas datas
Enviado: 20 Mai 2012 20:50
por alxsts
Olá!
Se precisa de uma diferença entre duas datas, é só subtrair uma da outra, como no exemplo do Pablo. No exemplo citado, no entanto, as variáveis estão trocadas, gerando um resultado negativo..
O correto é subtrair a data inicial da data final:
Cálculo de dias entre duas datas
Enviado: 20 Mai 2012 21:22
por Pablo César
o exemplo do Pablo. No exemplo citado, no entanto, as variáveis estão trocadas, gerando um resultado negativo..
Tá certo Alexandre, eu tinha errado, pior que compilei para ter certeza e acabei esquecendo de corrigir aqui no fórum... rsrs vc tem razão o certo é assim:
set date to British
Set century on
dData1:=CtoD("01/01/2012")
dData2:=CtoD("20/01/2012")
? (dData2-dData1)+1 // sem para subtrair, a primeira data tem que ser a data mais recente
Mas você Alexandre também acabou invertendo a lógica aqui em palavras:
O certo seria: "subtrair a data final da data inicial" mais um se quiser contar com o primeiro. Porque só após do primeiro dia, que conta 24 horas quem vem a ser apartir do segundo dia. O certo mesmo, não somar mais um.
Cálculo de dias entre duas datas..Resolvido
Enviado: 20 Mai 2012 21:35
por Vandi
Pablo César e Alexandre,
Boa noite...
Realmente é mais fácil do que eu imaginava.
Procurei na internet e achei rotinas complicadas para êsse cálculo em clipper, inclusive pessoas tbém com dúvidas nêsse sentido.
Fiz muitas tentativas, mas sempre insistindo em colocar DTOS(), tipo DTOS(CTOD(ndata2) - DTOS(CTOD(ndata1), por isso não dava certo de jeito algum.
Meus sinceros agradecimentos,
Obrigado...
Gilvandi
Cálculo de dias entre duas datas
Enviado: 20 Mai 2012 22:00
por alxsts
Olá!
Pablo: creio que aritméticamnte esteja correto: subtraio a data inicial da data final. Seria o mesmo que em 20 - 10 = 10. Subtraio 10 de 20 e não 20 de 10.
20/01/2012 (minuendo)
_ (operador)
01/01/2012 (subtraendo)
--------------
19 (diferença ou resto)
Indispensável dizer que as duas variáveis tem que ser do tipo Date. Se não forem, aí entram as funções de conversão:
(considerando um SET Date British). O importante é que o problema do Vandi foi resolvido.
Cálculo de dias entre duas datas
Enviado: 20 Mai 2012 22:09
por Pablo César
Pablo: creio que aritméticamnte esteja correto: subtraio a data inicial da data final
Ahhh sim tudo depende ao quê você chama de data inicial...
No seu exemplo abaixo você utilizou diferente, mostrando uma forma mais simples e certa, mas não data inicial menos data final...
O importante é que o problema do Vandi foi resolvido.
Sim claro ! Mas temos que ser claros, porque isto poderá ser útil no futuro. Aliás, tópicos abordando este mesmo assunto, aqui no fórum tem muitos, só faltou procurar pelo "Busca"...