Data atual e alterar data

E ai galera

olha soh estou com um grande problema

tenho q obter a data atual, facil neh?
mas depois tenho q poder setar outra data e comparar essa data q setei com a data atual!

Alguem pode me ajudar?

Valeu!

Olá!!

Obter a data atual:

Calendar dataAtual = Calendar.getInstance();

Comparar com a data atual:

dataAtual.compareTo(outraData);

Abraços!!

Para criar uma data a partir de uma String, você pode usar a classe java.text.SimpleDateFormat:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date data = sdf.parse("25/06/2009");

Para saber se uma data é antes ou depois de outra:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date data1 = sdf.parse("25/06/2008");
Date data 2= sdf.parse("25/06/2010");

if (data1.after(data2)) {
   //data1 é posterior a data 2
}
if (data1.before(data2)) {
   //data1 é anterior a data 2
}
if (data1.equals(data2)) {
   //data1 é igual a data 2
}

Existe uma pegadinha nessa classe Date: Ao contrário do que parece, ela não é um Date e sim um "Time", por que armazena a data, hora, minuto, segundo e milisegundo.
Assim pode acontecer de você comparar duas Datas iguais e o equals() por exemplo retornar que são datas diferentes, por que apontam para horas diferentes:

Date data1 = new Date();
Thread.sleep(5000);
Date data2 = new Date();
if (data1.equals(data2)) //esse teste irá retornar false

Se a sua data foi carregada a partir de um banco de dados, de um campo que só armazena a data (não é timestamp), então é provavel que esse problema não ocorra, por que nesses casos normalmente a hora é setada para 00:00:00.
Agora se você trabalha com objetos Date criados pela aplicação, então você terá de ficar atento a isso.

Normalmente, quando trabalho com operações sobre datas, utilizo a classe java.util.GregorianCalendar.

http://java.sun.com/j2se/1.5.0/docs/api/java/util/GregorianCalendar.html

Exemplos:

GregorianCalendar gc = new GregorianCalendar(); //assume a data e hora atuais

//Ajustar campos da data:
gc.set(GregorianCalendar.YEAR, 2008); //muda o ano
gc.set(GregorianCalendar.MONTH, 0); //muda o mês -> Atenção: 0 = janeiro, 1 = fevereiro, etc.
gc.set(GregorianCalendar.DAY_OF_MONTH, 2008); //muda o dia do mês

//Compara se duas datas estao no mesmo mes:
public boolean isMesmoMes(Date data1, Date data2) {
   GregorianCalendar gc1 = new GregorianCalendar();
   GregorianCalendar gc2 = new GregorianCalendar();

  gc1.setTime(data1);
  gc2.setTime(data2);

  return (gc1.get(GregorianCalendar.YEAR) == gc2.get(GregorianCalendar.YEAR) &&
              gc1.get(GregorianCalendar.MONTH) == gc2.get(GregorianCalendar.MONTH));
}

//Remove a parte referente as horas em um objeto Date (util para comparar apenas a parte da data entre dois objetos):
	public Date removerHora(Date data) {
		if (data == null) return null;
		
		GregorianCalendar in = new GregorianCalendar();
		in.setTime(data);
		int dia = in.get(GregorianCalendar.DATE);
		int mes = in.get(GregorianCalendar.MONTH);
		int ano = in.get(GregorianCalendar.YEAR);
		
		GregorianCalendar out = new GregorianCalendar();
		out.set(ano, mes, dia, 0, 0, 0);
		out.set(GregorianCalendar.MILLISECOND, 0);
		
		return out.getTime();
	}

Espero ter ajudado, não sei se essas são as formas mais eficientes de se traballhar com datas, mas é desta maneira que tenho utilizado.