Cálculo de dias entre duas datas
Moderador: Moderadores
Cálculo de dias entre duas datas
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
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
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Cálculo de dias entre duas datas
Mas você aqui não está dizendo exatamente o que você quer...Já encontrei alguma coisa na internet, mas não atendeu da forma que eu preciso.
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).Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Cálculo de dias entre duas datas
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:
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ódigo: Selecionar todos
? (dtFinal - DtInicial)[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Cálculo de dias entre duas datas
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:o exemplo do Pablo. No exemplo citado, no entanto, as variáveis estão trocadas, gerando um resultado negativo..
Mas você Alexandre também acabou invertendo a lógica aqui em palavras: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
Código: Selecionar todos
O correto é subtrair a data inicial da data final:Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Cálculo de dias entre duas datas..Resolvido
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
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
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Cálculo de dias entre duas datas
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. (considerando um SET Date British). O importante é que o problema do Vandi foi resolvido.
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.
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:20/01/2012 (minuendo)
_ (operador)
01/01/2012 (subtraendo)
--------------
19 (diferença ou resto)
Código: Selecionar todos
? CtoD("20/01/2012") - CtoD("01/01/2012") []´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Cálculo de dias entre duas datas
Ahhh sim tudo depende ao quê você chama de data inicial...Pablo: creio que aritméticamnte esteja correto: subtraio a data inicial da data final
No seu exemplo abaixo você utilizou diferente, mostrando uma forma mais simples e certa, mas não data inicial menos data final...
Código: Selecionar todos
? (dtFinal - DtInicial)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"...O importante é que o problema do Vandi foi resolvido.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
