bom, ja tive esse problema e a minha solução maluca foi transformar as duas datas em timestamp e diminuir da maior a menor. depois disso dividir a quantidade de segundos por 86400. Usei isso quando estava trabalhando no php, mas acredito que tem um modo melhor de conseguir esse resultado no Java.
Date data1 = new Date(), data2 = new Date();
data1.setTime(System.currentTimeMillis());
data2.setTime(System.currentTimeMillis());
System.out.println(data2.getTime() - data1.getTime());
Se tivesse como eu definir a data1 e a data2, passando uma string, tipo “19800101” ou “01/01/1980” ou em qq outro formato, me resolveria, pois ai, para calcular o numero de dia, eh soh dividir a dif. entre elas…
ummm, mas então teu problema seria tambem setar a data especifica dentro dos objetos Date?
se for isso aconselho a olhar a classe GregorianCalendar, pois a classe Date ja tem os metodos para setar data deprecated.
Eu fiz assim, deu certo, alguem sabe de alguma forma melhor?
Date data1 = new Date(), data2 = new Date();
Calendar c1 = Calendar.getInstance();
//Pega a primeira data
c1.set(1980, 1, 1);
data1.setTime(c1.getTimeInMillis());
//Pega a segunda data
c1.set(1981,1,1);
data2.setTime(c1.getTimeInMillis());
System.out.println((data2.getTime() - data1.getTime())/1000/60/60/24);
public long DiferencaDatas(String dataInicial, String dataFinal){
Date data1 = new Date(), data2 = new Date();
Calendar c1 = Calendar.getInstance();
//Pega a primeira data
c1.set(Integer.parseInt(dataInicial.substring(0, 4)), Integer.parseInt(dataInicial.substring(4, 6)), Integer.parseInt(dataInicial.substring(6, 8)));
data1.setTime(c1.getTimeInMillis());
//Pega a segunda data
c1.set(Integer.parseInt(dataFinal.substring(0, 4)), Integer.parseInt(dataFinal.substring(4, 6)), Integer.parseInt(dataFinal.substring(6, 8)));
data2.setTime(c1.getTimeInMillis());
return (data2.getTime() - data1.getTime()) /1000/60/60/24;
}
amigos , coloquei esta funcao no meu programa e ela nao funcionou , da uma exceção , estou com o mesmo problema de muitos , tenho uma data inicial e uma data final retorando em date . Até aí tdo bem só que na hora de calcular a diferença de dias entre a data inicial e final eu nao sei .
Ah so mais um coisa … como faço para saber qual dia da semana é a data que eu escolhi Ex : escolhi o dia 18 de novembro de 2008 e saber que dia da semana corresponde a esta data ?
[quote]String java.lang.String.substring(int beginIndex, int endIndex)
Returns a new string that is a substring of this string. The substring begins at the specified beginIndex and extends to the character at index endIndex - 1. Thus the length of the substring is endIndex-beginIndex.
// calcula a diferenca entre datas
public long DiferencaDatas(String datain, String datafin)
{
Date data11 = new Date(), data22 = new Date();
Calendar c1 = Calendar.getInstance();
//Pega a primeira data
c1.set(Integer.parseInt(datain.substring(0, 4)), Integer.parseInt(datain.substring(4, 6)), Integer.parseInt(datain.substring(6, 8)));
data11.setTime(c1.getTimeInMillis());
//Pega a segunda data
c1.set(Integer.parseInt(datafin.substring(0, 4)), Integer.parseInt(datafin.substring(4, 6)), Integer.parseInt(datafin.substring(6, 8)));
data22.setTime(c1.getTimeInMillis());
return (data22.getTime() - data11.getTime()) /1000/60/60/24;
}