La clase a utilizar será Calendar de java.util. Esta clase nos brinda información sobre todo lo que tenga que ver con el tiempo, es muy completa, las zonas horarias que utilizamos, y cualquier cosa que se nos pueda ocurrir.
Como es un clase abstracta, no puede ser instanciada, es decir que no tendrá un constructor típico “new Calendar()”, en ves de ello utilizaremos el método getInstance()
Para asignar valore y obtenerlos utilizaremos los métodos get() y set(). Pero primero lo primero, las constantes que nos permiten setear son enteros por lo que deberemos guardarlos o poner enteros. Las agregaría acá pero con solo poner un “.” En su IDE favorito se desplegaran todas las que se imaginan y un poquito mas.
Comenzaremos por obtener los datos
Int hora = fecha.get(Calendar.HOUR);
podemos poner un solo dato...
Int hora = 13;
//calendar.set(int campo,valor);
fecha.set(Calendar.HOUR_OF_DAY, hora);
o todos los que deseamos a la ves...
fecha.set(int años, int mes,int dia);
fecha.set(int año,int mes,int dia,int hora_del_dia, int minutos)
fecha.set(int año,int mes,int dia,int hora_del_dia, int minutos, int segundos);
Si vamos a trabajar con horas, debemos hacer la distinción ente HOUR y HOUR_OF_DAY, la primera nos mostrará la hora de 0-11 y la segunda de 0-23. Si vamos a trabajar con meses deberemos restarle uno, así por ejemplo noviembre será el mes 10.
Sumar a una Fecha
para sumarle a una variable de tipo Calendar podemos utilizar el método add(), aunque si se desea se puede utilizar el método roll().
//Calendar.add(int campo, int aumento)
Así se incrementaran dos horas, a la hora de la instancia. Trabajo similar se puede realizar con cualquiera de las constantes.
El método roll() tiene dos formas:
El primero de ellos tiene un comportamiento similar al del metodo add() pero la diferencia yace en que se incrementara sin cambiar los campos superiores. Por ejemplo se incrementaran los minutos pero cuando se produzca un incremento en la hora, esta no cambiara a difrencia de add(). Y la llamada al metodo puede ser de dos formas:
//1) fecha.roll(int campo, int incremento);
El segundo es como un contador
//2) fecha.roll(int campo, boolean arriba);
Dependiendo del valor boolean se incrementara en uno hacia arriba o decrementara hacia abajo.
Compardando dos calendarios
El metodo a utilizar es compareTo(Calendar otro)
//Calendar.compareTo(Calendar otro_calendario)
Calendar hora2=Calendar.getInstance();
hora2.add(Calendar.MINUTE,1);
int d =hora1.compareTo(hora2);
Sacando diferencias entre calendarios
Tan simple como lo visto es trabajar con calendarios. Espero haber ayudado.