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.
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…
S
ScSi
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.
kemperacc
Eu fiz assim, deu certo, alguem sabe de alguma forma melhor?
Datedata1=newDate(),data2=newDate();Calendarc1=Calendar.getInstance();//Pega a primeira datac1.set(1980,1,1);data1.setTime(c1.getTimeInMillis());//Pega a segunda datac1.set(1981,1,1);data2.setTime(c1.getTimeInMillis());System.out.println((data2.getTime()-data1.getTime())/1000/60/60/24);
kemperacc
A funcao ficou assim:
publiclongDiferencaDatas(StringdataInicial,StringdataFinal){Datedata1=newDate(),data2=newDate();Calendarc1=Calendar.getInstance();//Pega a primeira datac1.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 datac1.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;}
analuiza.fagundes
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 ?
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.
// pega a data inicial Datetx_data_inicial_data=(Date)tx_data_inicial.getValue();SimpleDateFormatformato=newSimpleDateFormat("dd/MM/yyyy");formato.format(tx_data_inicial_data);Stringdata1=String.valueOf(formato.format(tx_data_inicial_data));// pega a data finalDatetx_data_final_data=(Date)tx_data_final.getValue();formato.format(tx_data_final_data);Stringdata2=String.valueOf(formato.format(tx_data_final_data));// calcula a diferenca entre dataspubliclongDiferencaDatas(Stringdatain,Stringdatafin){Datedata11=newDate(),data22=newDate();Calendarc1=Calendar.getInstance();//Pega a primeira datac1.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 datac1.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;}// exibe resultadolongc=DiferencaDatas(data1,data2);System.out.println(c);
analuiza.fagundes
ta dando uma exceção … eu selecionei a data inicial como 02/11/2008
Exception in thread “AWT-EventQueue-0” java.lang.NumberFormatException: For input string: “02/1”
B
Bruno_Laturner
Desista de usar substrings, aprenda a usar o SimpleDateFormat.