Bienvenidos sean a este post, despues de haber estudiado como trabajar con la hora y fecha por medio de Java pasemos a ver una derivacion de la clase Calendar llamada GregorianCalendar, Calendario Gregroriano, el cual es el calendario mas familiar y utilizado por nosotros, veremos algunos constructores y metodos disponibles por esta clase y un ultimo dato esta clase define dos tipos: AD (Despues de Cristo) y BC (Antes de Cristo) por sus siglas en ingles, las cuales representan las dos eras del calendario en si. Veamos algunos de los constructores disponibles:

ConstructorDescripcion
GregorianCalendar()El constructor por defecto que utiliza los datos locales del equipo.
GregorianCalendar(int anyo, int mes, int dia)El constructor que utiliza los datos locales del equipo pero con una fecha informada.
GregorianCalendar(int mes, int dia, int hora, int minuto, int segundo)El constructor utiliza los datos locales del equipo pero con la fecha y hora informada
GregorianCalendar(int anyo, int mes, int dia, int hora, int minuto, int segundo)El constructor utiliza los datos locales del equipo pero con la fecha y hora informada
GregorianCalendar(Locale locale)Construye un calendario en base a la zona horario local y el dato local informado
GregorianCalendar(TimeZone zona)Construye un calendario en base a la zona horaria informada y el dato local del equipo
GregorianCalendar(TimeZone zona, Locale locale)Construye un calendario en base a la zona horaria y el dato local informado

Ahora pasemos a ver algunos metodos disponibles en esta clase:

MetodoDescripcion
add(int campo, int cantidad)Agrega la cantidad (con signo) de tiempo informada en el campo de tiempo dado segun las reglas del calendario
computeFields()Transforma tiempo UTC en milisegundos para valores de campos de tiempo
computeTime()Anula al calendario para convertir valores del campo de tiempo en UTC como miliegundos
equals(Objeto obj)Compara el calendario Gregoriano con el objeto de referencia
get(int campo)Consigue el valor del campo de tiempo informado
getActualMaximum(int campo)Retorna el valor maximo que el campo informado podria tener de la fecha actual
getActualMinimum(int campo)Retorna el valor minimo que el campo informado podria tener de la fecha actual
getGreatestMinimum(int field)Consigue el valor mas alto de los minimos si varia
getGregorianChange()Consigue el cambio de fecha en el calendario Gregoriano
getLeastMaximum()Consigue el valor mas bajo de los maximos si varia
getMaximum(int campo)Devuelve el valor maximo del campo informado
getTime()Consigue la hora actual del calendario
getTimeInMillis()Consigue la hora actual en milisegundos y con formato long
getTimeZone()Consigue la zona horaria
getMinimum(int campo)Devuelve el valor minimo del campo informado
hashCode()Anula el codigo hash
isLeapYear(int anyo)Determina si el año informado es bisiesto
roll(int campo, boolean up)Adiciona o substrae una unidad simple de tiempo sobre el campo de tiempo informado sin reportar cambios en los campos mas grandes
set(int campo, int value)Setea el campo del tiempo con el valor informado
set(int anyo, int mes, int dia)Setea los valores del campo año, mes y dia
set(int anyo, int mes, int dia, int hora, int miinuto)Setea los valores del campo año, mes, dia, hora y minuto
set(int anyo, int mes, int dia, int hora, int minuto, int segundos)Setea los valores del campo año, mes, dia, hora, minutos y segundos
setGregorianChange(Date fecha)Setea el cambio de fecha del calendario Gregoriano
setTime(Date fecha)Setea la hora actual del calendario Gregoria con la fecha informada
setTimeInMillis(long millis)Setea la hora actual del calendario Gregoria con el valor informado de tipo long en milisegundos
setTimeZone(TimeZone value)Setea la zona horaria con el valor informado
toString()Devuelve una representacion en cadena de este calendario

Pasemos a ver un ejemplo para comprender un poco mejor su funcionamiento:

import java.util.*;

public class GregorianoDemo
{
        public static void main(String args[])
        {
        String meses[] = { "Ene", "Feb", "Mar", "Abr", "May", "Jun",
                "Jul", "Ago", "Sep", "Oct", "Nov", "Dic" };
        int anyo;

        GregorianCalendar gcalendario = new GregorianCalendar();

        System.out.print("Fecha: ");
        System.out.print(gcalendario.get(Calendar.DATE));
        System.out.print(" " + meses[gcalendario.get(Calendar.MONTH)]
                         + " ");
        System.out.println(anyo = gcalendario.get(Calendar.YEAR));
        System.out.print("Hora: ");
        System.out.print(gcalendario.get(Calendar.HOUR) + ":");
        System.out.print(gcalendario.get(Calendar.MINUTE) + ":");
        System.out.println(gcalendario.get(Calendar.SECOND));

        if (gcalendario.isLeapYear(anyo))
        {
                System.out.println("El año actual es bisiesto");
        } else {
                System.out.println("El año actual no es bisiesto");
        }
        }
}

En este caso volvemos a importar todos los paquetes de tipo util, primero vamos a crear un array llamada meses donde guardaremos todos los meses abreviados, luego crearemos una variable llamada anyo, despues crearemos un objeto llamado gcalendario de la clase GregorianCalendar. En nuestro siguiente paso primero imprimiremos la fecha por medio de este bloque:

System.out.print("Fecha: ");
System.out.print(gcalendario.get(Calendar.DATE));
System.out.print(" " + meses[gcalendario.get(Calendar.MONTH)] + " ");
System.out.println(anyo = gcalendario.get(Calendar.YEAR));

En este caso utilizaremos el metodo get() y luego con las tres constantes determinaremos el dia (DATE), mes (MONTH) y año (YEAR) pero con la particularidad de que el resultado obtenido en la constante MONTH sera utilizado para la posicion de nuestro array meses y tambien seteamos el valor del año en nuestra variable anyo, luego hacemos exactamente lo mismo para la hora, solo que utilizamos las constantes HOUR, MINUTE y SECOND, y por ultimo tenemos un condicional donde chequeara si el valor almacenado en anyo es bisiesto o no, en caso afirmativo mostrara el primer mensaje de lo contrario el segundo, si compilamos nuestra aplicacion y la probamos obtendremos la siguiente salida:

tinchicus@dbn001vrt:~/java/program$ java GregorianoDemo
Fecha: 10 Nov 2018
Hora: 10:54:21
El año actual no es bisiesto
tinchicus@dbn001vrt:~/java/program$

En resumen, hoy hemos estudiado una nueva clase utilizada para manipular el calendario Gregoriano, hemos visto los constructores disponibles, algunos metodos, un ejemplo donde hemos podido armar una fecha, una hora y chequear si el año es bisiesto o no, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios