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.
Este no es otro que el 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:
Constructor | Descripcion |
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:
Metodo | Descripcion |
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 tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.
Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.


Tambien podes donar
Es para mantenimiento del sitio, gracias!
$1.50