Para obtener la fecha actual y en general para trabajar con fechas en Java tenemos varias posibilidades. En este post vamos a explicar como obtener la fecha del sistema usando la clase Calendar.
Calendar es una clase base abstracta con la que podremos representar y manejar fechas, así como obtener y modificar las distintas partes que la componen: año, mes, dia, hora, minuto, segundo, etc.
Para usarla debemos hacer el siguiente import:
import java.util.Calendar;
Para instanciar un objeto de la clase Calendar, tendremos 2 opciones:
Opción 1. Utilizar el método getInstance(), que nos proporcionará un objeto Calendar cuyos campos han sido inicializados con la fecha y la hora actuales del sistema.
Calendar fecha = Calendar.getInstance();
Opción 2. Utilizar la clase GregorianCalendar. Esta clase es una subclase de Calendar, que nos proporciona un calendario gregoriano estándar.
Calendar fecha = new GregorianCalendar();
Para usar GragorianCalendar debemos hacer el siguiente import:
import java.util.GregorianCalendar;
Una vez creado el objeto que contiene la fecha del sistema, para obtener un campo concreto de la fecha se utiliza el método get(campo) donde campo indica la parte de la fecha que quiero obtener. Cada una de estas partes está definida como una constante en la clase Calendar.
Por ejemplo, para obtener el año de la fecha actual podemos escribir las instrucciones:
Calendar fecha = new GregorianCalendar();
int año = fecha.get(Calendar.YEAR);

Ejemplo: Programa Java que obtiene la fecha y hora actual del sistema y la muestra por pantalla. El programa mostrará año, mes, día, hora, minutos y segundos.
import java.util.*;
public class Fechas {
    public static void main(String[] args) {
        //Instanciamos el objeto Calendar
        //en fecha obtenemos la fecha y hora del sistema
        Calendar fecha = new GregorianCalendar();
        //Obtenemos el valor del año, mes, día,
        //hora, minuto y segundo del sistema
        //usando el método get y el parámetro correspondiente
        int año = fecha.get(Calendar.YEAR);
        int mes = fecha.get(Calendar.MONTH);
        int dia = fecha.get(Calendar.DAY_OF_MONTH);
        int hora = fecha.get(Calendar.HOUR_OF_DAY);
        int minuto = fecha.get(Calendar.MINUTE);
        int segundo = fecha.get(Calendar.SECOND);
        System.out.println("Fecha Actual: "
                           + dia + "/" + (mes+1) + "/" + año);
        System.out.printf("Hora Actual: %02d:%02d:%02d %n",
                                              hora, minuto, segundo);
    }
}
El programa muestra la fecha y hora actual de la siguiente forma:
Fecha Actual: 4/11/2013
Hora Actual: 16:53:25
Debemos tener en cuenta que el valor devuelto por Calendar.MONTH correspondiente al mes comienza por 0, es decir, el valor 0 corresponde a enero y el valor 11 corresponde a diciembre por lo tanto debemos sumarle uno a este valor antes de operar con él.
Además de obtener la fecha, también podemos asignar valores a un campo determinado de la fecha.
Para asignar valores a un campo concreto de la fecha o asignar fechas completas se utiliza método set:
Ejemplo:
fecha.set(2013,5,1); //asigna año, mes, día
fecha.set(2013,5,1,3,45,12); //asigna año, mes, día, hora, minuto, segundo
fecha.set(Calendar.YEAR,2015); //asigna el valor 2015 al año
También podemos sumar o restar valores a la fecha y hora.
Ejemplo: sumar 10 días a la fecha actual:
//sumar 10 días a la fecha actual
fecha.add(Calendar.DAY_OF_MONTH, 10);
Ejemplo: sumar 10 minutos a la hora actual:
//sumar 10 minutos a la hora actual
fecha.add(Calendar.MINUTE, 10);
Ejemplo: restar 2 años a la fecha actual:
//restar 2 años a la fecha actual
fecha.add(Calendar.YEAR, -2);