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.
Classe para converter uma String em Date:
private Date parseDate(String dataString) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
try {
date = sdf.parse(dataString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
Para descobrir a data atual:
Calendar dataAtual = Calendar.getInstance();
Alguém poderia falar qual a melhor maneira de fazer isso ?
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.
Classe para converter uma String em Date:
private Date parseDate(String dataString) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
try {
date = sdf.parse(dataString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
Para descobrir a data atual:
Calendar dataAtual = Calendar.getInstance();
Alguém poderia falar qual a melhor maneira de fazer isso ?
Desde já, obrigado.[/quote]
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”
[code] 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);
Para calcular intervalo de dias entre datas eu uso esta função:
public static int pegaIntervalo(java.util.Date dataLow, java.util.Date dataHigh) {
GregorianCalendar startTime = new GregorianCalendar();
GregorianCalendar endTime = new GregorianCalendar();
GregorianCalendar curTime = new GregorianCalendar();
GregorianCalendar baseTime = new GregorianCalendar();
startTime.setTime(dataLow);
endTime.setTime(dataHigh);
int dif_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;
}
int result_years = 0;
int result_months = 0;
int result_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) )
{
int max_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));
return result_years+result_months+result_days;
}
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…