Trabalhando com Datas

Olá,

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.

Diferença entre datas…
Eu tenho a impressão de já ter visto a solução em algum lugar na internet, mas não lembro onde.

http://www.exampledepot.com/egs/java.util/CompDates.html

[quote=mid_]Olá,

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”

tenta esse:

[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);

    if(mod > DOZE_HORAS){
        diff++;
    }else if(mod < (-1)*DOZE_HORAS){
        diff--;
    }
    
    return diff;
}

[/code]

abraços

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…