Estou com o seguinte problema: O usuário informa uma data, essa data é guardada como String, eu tenho que pegar essa data e calcular a diferença entre a data informada e a data atual. O problema é que o método que estou utilizando para converter essa String retorna um Date e para descobrir a data atual estou usando um Calendar.
Estou com o seguinte problema: O usuário informa uma data, essa data é guardada como String, eu tenho que pegar essa data e calcular a diferença entre a data informada e a data atual. O problema é que o método que estou utilizando para converter essa String retorna um Date e para descobrir a data atual estou usando um Calendar.
Alguém poderia falar qual a melhor maneira de fazer isso ?
Desde já, obrigado.
O que você poderia fazer é receber outro parametro contendo o mascaramento da data.
Sendo assim, você não ficaria limitado somente a mascara “dd/MM/yyyy”
P
palmadias
tenta esse:
public static long getDiferencaEmDias(Date depois, Date antes) {
long millis = depois.getTime() - antes.getTime();
long diff = millis / (1000 * 3600 * 24);
long mod = millis % (1000 * 3600 * 24);
if(mod > DOZE_HORAS){
diff++;
}else if(mod < (-1)*DOZE_HORAS){
diff--;
}
return diff;
}
abraços
felipedamiani
Para calcular intervalo de dias entre datas eu uso esta função:
publicstaticintpegaIntervalo(java.util.DatedataLow,java.util.DatedataHigh){GregorianCalendarstartTime=newGregorianCalendar();GregorianCalendarendTime=newGregorianCalendar();GregorianCalendarcurTime=newGregorianCalendar();GregorianCalendarbaseTime=newGregorianCalendar();startTime.setTime(dataLow);endTime.setTime(dataHigh);intdif_multiplier=1;// Verifica a ordem de inicio das datas if(dataLow.compareTo(dataHigh)<0){baseTime.setTime(dataHigh);curTime.setTime(dataLow);dif_multiplier=1;}else{baseTime.setTime(dataLow);curTime.setTime(dataHigh);dif_multiplier=-1;}intresult_years=0;intresult_months=0;intresult_days=0;// Para cada mes e ano, vai de mes em mes pegar o ultimo dia para import acumulando // no total de dias. Ja leva em consideracao ano bissexto while(curTime.get(GregorianCalendar.YEAR)<baseTime.get(GregorianCalendar.YEAR)||curTime.get(GregorianCalendar.MONTH)<baseTime.get(GregorianCalendar.MONTH)){intmax_day=curTime.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);result_months+=max_day;curTime.add(GregorianCalendar.MONTH,1);}// Marca que é um saldo negativo ou positivo result_months=result_months*dif_multiplier;// Retirna a diferenca de dias do total dos meses result_days+=(endTime.get(GregorianCalendar.DAY_OF_MONTH)-startTime.get(GregorianCalendar.DAY_OF_MONTH));returnresult_years+result_months+result_days;}
M
mid_
Desculpe-me, pessoal, mas acho que vocês não entenderam o real problema…
O problema é: Eu recebo uma String e a converto para Date.
Para descobrir o dia de hoje, eu uso Calendar.
Aí que está o problema para tirar a diferença entre as datas…