Preciso obter o intervalo de dias entre vários períodos de datas, acontece que as datas podem perterncer a períodos diferentes. Ex.:
03/03/2009 a 30/03/2009 - 27 dias
05/03/2009 a 15/03/2009 - 10 dias
.
.
.
Acontece que ai houve uma intersecção entre duas datas, os dias 05 ao dia 15 pertenceram as duas datas e apenas um deve contar… então teria apenas 27 dias!
Alguma dica de fazer isso, já tentei com alguns whiles, mas não deu muito certo,
Depois de quebrar a cabeça e como preciso disso urgente fiz assim: Leio a data e armazeno num vetor de datas, leio a segunda e armazeno… se a data lida já conter no vetor eu não a adiciono. No fim eu sei quantas datas diferentes existem. Seri que não é das melhores formas, mas me serviu e é só pra um amigo utilizar nuns cálculos ai de uma escola.
Agora o que tá pegando é transformar 500 dias por exemplo em ano, mes, e dias, sei que tenho que dividir td por 365 pra pegar o ano, e o resto por 30 pra pegar o mês, mas tá dando uns erros aqui. Alguém já fez isso?
[quote=luceliopv]blz pessoal, obriago mesmo pelas sugestões
Depois de quebrar a cabeça e como preciso disso urgente fiz assim: Leio a data e armazeno num vetor de datas, leio a segunda e armazeno… se a data lida já conter no vetor eu não a adiciono. No fim eu sei quantas datas diferentes existem. Seri que não é das melhores formas, mas me serviu e é só pra um amigo utilizar nuns cálculos ai de uma escola.
[/quote]
Se vc não quer a melhor forma não sei porque pergunta.
Primeiro o seu problema não está bem explicado. Para as datas
03/03/2009 a 30/03/2009 e 05/03/2009 a 15/03/2009 temos dois intervalos
se unirmos essses intervalos vamos obter 03/03/2009 a 30/03/2009 já que o segundo está contido no primeiro.
O resultado seria 27 dias. Se vc quer contar os dias dos dois intervalos basta apenas somar os dias de cada um sendo irrelevante que os intervalos possam se sobrepor.
Antes de resolver o problema, é preciso saber qual é o problema.
Esse divisão depende do ano. Nem sempre o ano tem 365 dias.
Se quiser fixar ano = 365 , mes = 30 então use o operador resto (%) e operação de divisão inteira (/)
[quote=luceliopv]Você poderia ser mais educado!, não pedi sua ajuda, você ajuda se quer…
[/quote]
Vc tb, e além disso vc precisa ser mais profissional. Se veio perguntar no guj é porque precisa de ajuda.
Mas se vc quer a solução gambiarra veio perguntar no lugar errado. As pessoas estão tentando lhe dar a solução melhor e vc despreza esse esforço dizendo:
Isso é que é ser mal educado. Desconsiderar totalmente o que lhe foi dito e pior que isso, a qualidade da solução.
Quer fazer gambiarra, invente a sua. Não venha gastar o tempo das pessoas que vão lhe responder coisas corretas.
Vc não entende nada mesmo, em nenhum momento desprezei a ajuda dos colegas, agradeci a ajuda deles e falei que por precisar disso hoje não poderia me aprofundar nas soluções propostas e faria algo rápido mas que funcionasse. Se tivessem uma ideia que não me fizesse perder muito tempo ou algo que já tivessem feito eu usaria.
E ao contrário de vc, nenhum se manifestou de forma desrespeitosa e arrogante, foram bem gentis.
E novamente, o fórum é um lugar aberto e vc não tem obrigação nenhuma de me ajudar, ainda mais da forma que fez. Se é para tratar as pessoas assim, se omita de comentar, finja que nem leu o tópico, outras pessoas pacientes e educadas ajudarão.
[quote=luceliopv]Vc não entende nada mesmo, em nenhum momento desprezei a ajuda dos colegas, agradeci a ajuda deles e falei que por precisar disso hoje não poderia me aprofundar nas soluções propostas e faria algo rápido mas que funcionasse. Se tivessem uma ideia que não me fizesse perder muito tempo ou algo que já tivessem feito eu usaria.
E ao contrário de vc, nenhum se manifestou de forma desrespeitosa e arrogante, foram bem gentis.
[/quote]
A diferença é apenas essa. Elas não se manifestaram eu sim. O que vc fez sim foi errado. Vc tentou se aproveitar do guj sem respeito pelas pessoas ou pela produção de software. Vc mesmo confessou que se tivessemos algo pronto que não fizesse pensar vc usaria.
Se as pessoas soubessem disso no inicio nem sequer teriam respondido, da mesma forma que não se responde a pedidos de resolução de trabalho de casa.
É vc que está em violação da etiqueta do guj, eu estou apenas lhe chamando a atenção para que não se repita das próximas vezes e principalmente para que outros não tentem o mesmo.