Calendar offre delle variabili che stanno ad indicare l'anno corrente, il mese, il giorno della settimana.
Tramite un oggetto GregorianCalendar è possibile manipolarle, ed ottenere anche (ovviamente) la data corrente.
codice:
GregorianCalendar gc = new GregorianCalendar();
Per ottenere i giorni:
codice:
System.out.println(gc.get(Calendar.DAY_OF_MONTH)+"/"+(gc.get(Calendar.MONTH)+1)+"/"+gc.get(Calendar.YEAR));
// 12/8/2010
Se vuoi andare ad una data puoi utilizzare un altra forma, come ad esempio:
codice:
GregorianCalendar gc = new GregorianCalendar(year,month,day);
Ricordati che i mesi sono 0-based, questo vuol dire che gennaio è uguale a 0 e non a 1 (ecco perchè la sopra ho messo quel +1.
Fornisce anche altri metodi, tra cui add
codice:
gc.add(Calendar.DAY,-2);
Io ti mostro un altro esempio, così da illustrati un pò il funzionamento di GregorianCalendar 
codice:
import java.util.*;
class EsempioDate {
private GregorianCalendar gc;
EsempioDate() {
gc = new GregorianCalendar();
}
void resetData() {
gc = new GregorianCalendar();
}
void dataCorrente() {
System.out.println(gc.get(Calendar.DAY_OF_MONTH)+"/"+(gc.get(Calendar.MONTH)+1)+"/"+gc.get(Calendar.YEAR));
}
void offsetDaDataCorrente(int offset) {
// riceve il nome del campo, ed il numero da sommare a quel campo.
// va da se che un numero negativo verrà sottratto e non addizionato
gc.add(Calendar.DAY_OF_MONTH,offset);
dataCorrente();
}
}
class EsempioCalendar {
public static void main(String[] args) {
EsempioDate ed = new EsempioDate();
// Mostra la data di oggi
ed.dataCorrente();
// mostra la data che passo, sommando 2 alla variabile DAY_OF_MONTH
ed.offsetDaDataCorrente(2);
// riporta la data allo stato "originale" (ad oggi)
ed.resetData();
// data -2 giorni (ovvero vado a 2 giorni fa)
ed.offsetDaDataCorrente(-2);
}
}
output:
codice:
12/8/2010
14/8/2010
10/8/2010
Come ho detto il metodo add somma al campo passato il numero che si vuole. Se il numero è positivo il numero verrà appunto addizionato, in caso contrario verrà sottratto.