Requisitos previos: java.util.Locale , java.util.TimeZone , Calendar.get()
GregorianCalendar es una subclase concreta (una que tiene la implementación de todos sus miembros heredados, ya sea de la interfaz o de la clase abstracta) de un Calendario que implementa la más ampliamente utilizó el calendario gregoriano con el que estamos familiarizados.
java.util.GregorianCalendar frente a java.util.Calendar
La principal diferencia entre las clases GregorianCalendar y Calendar es que Calendar Class es una clase abstracta que no se puede instanciar. Entonces, un objeto de Calendar Class se inicializa como:
Calendar cal = Calendar.getInstance();
Aquí, un objeto llamado cal de Calendar Class se inicializa con la fecha y la hora actuales en la configuración regional y la zona horaria predeterminadas. Mientras que GregorianCalendar Class es una clase concreta, se puede crear una instancia. Entonces, un objeto de la clase GregorianCalendar se inicializa como:
GregorianCalendar gcal = new GregorianCalendar();
Aquí, un objeto llamado gcal de GregorianCalendar Class se inicializa con la fecha y la hora actuales en la configuración regional y la zona horaria predeterminadas.
Campos definidos:
GregorianCalendar Class defines two fields: AD : referring to the common era(anno Domini) BC : referring to before common era(Before Christ)
Constructores: hay varios constructores para los objetos GregorianCalendar . En términos generales, los constructores de GregorianCalendar inicializan el objeto con la fecha y/o la hora especificadas por el usuario en la configuración regional y la zona horaria predeterminadas , o inicializan el objeto con la fecha y la hora predeterminadas en la configuración regional y/o la zona horaria especificadas por el usuario . Estos son los siguientes:
Firma del constructor | Descripción |
---|---|
Calendario Gregoriano() | inicializa el objeto con la fecha y la hora actuales en la configuración regional y la zona horaria predeterminadas |
GregorianCalendar(int año , int mes , int día del mes ) | inicializa el objeto con el conjunto de fechas pasado como parámetros en la configuración regional y la zona horaria predeterminadas |
GregorianCalendar(int año , int mes , int día del mes , int horas , int minutos ) | inicializa el objeto con la fecha y la hora establecidas como parámetros en la zona horaria y la configuración regional predeterminadas |
GregorianCalendar(int año , int mes , int día del mes , int horas , int minutos , int segundos ) | inicializa el objeto con la fecha y un conjunto de tiempo más específico pasado como parámetros en la configuración regional y la zona horaria predeterminadas |
GregorianCalendar ( Configuración regional ) | inicializa el objeto con la fecha y hora actuales en la zona horaria predeterminada y la configuración regional pasada como parámetros |
Calendario gregoriano (zona horaria zona horaria ) | inicializa el objeto con la fecha y hora actuales en la configuración regional predeterminada y la zona horaria pasada como parámetros |
GregorianCalendar(TimeZone timeZone , Locale locale ) | inicializa el objeto con la fecha y la hora actual en la configuración regional y la zona horaria pasada como parámetros |
Los métodos from() , toZonedDateTime() , getCalendarType() se introdujeron en JDK 8.
Java
// Java Program to show that Calendar class with // default instantiation and GregorianCalendar class // with default constructor is basically the same as both // return the Gregorian Calendar for the default // date, time, time zone and locale import java.util.Calendar; import java.util.GregorianCalendar; class CalendarGFG { public static void main(String[] args) { // Creating an object of Calendar Class Calendar cal = Calendar.getInstance(); /* Creating an object of GregorianCalendar Class */ GregorianCalendar gcal = new GregorianCalendar(); /* Displaying Current Date using Calendar Class */ System.out.println("Calendar date: " + cal.getTime()); /* Displaying Current Date using GregorianCalendar Class */ System.out.print("Gregorian date: " + gcal.getTime()); } // end of main function } // end of class
Producción:
Calendar date: Sat Apr 28 13:36:37 UTC 2018 Gregorian date: Sat Apr 28 13:36:37 UTC 2018
Ejemplo para demostrar el uso de varios constructores:
1. Uso del constructor predeterminado
Java
// Java program to demonstrate simple GregorianCalendar // operations import java.util.Locale; import java.util.TimeZone; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarGFG { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of GregorianCalendar class using default constructor*/ GregorianCalendar gcal = new GregorianCalendar(); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + Locale.getDefault().getDisplayName()); } // end of main function } // end of class
Producción:
Date: Apr 30, 2018 Time: 10:21:51 PM Time Zone: Coordinated Universal Time Locale: English (United States)
2. Pasando año, mes, día del mes como parámetros:
Java
// Java program to demonstrate simple GregorianCalendar // operations import java.util.Locale; import java.util.TimeZone; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarGFG { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of GregorianCalendar class by specifying year, month and dayOfMonth */ GregorianCalendar gcal = new GregorianCalendar(2018, 3, 30); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + Locale.getDefault().getDisplayName()); } // end of main function } // end of class
Producción:
Date: Apr 30, 2018 Time: 0:0:0 AM Time Zone: Coordinated Universal Time Locale: English (United States)
3. Pasando año, mes, día del mes, hora del día, minuto:
Java
// Java program to demonstrate simple GregorianCalendar // operations import java.util.Locale; import java.util.TimeZone; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarGFG { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of GregorianCalendar class by specifying year, month, dayOfMonth, hourOfDay and minute */ GregorianCalendar gcal = new GregorianCalendar(2018, 3, 30, 10, 21); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + Locale.getDefault().getDisplayName()); } // end of main function } // end of class
Producción:
Date: Apr 30, 2018 Time: 10:21:0 AM Time Zone: Coordinated Universal Time Locale: English (United States)
4. Pasando año, mes, día del mes, hora del día, minuto, segundo:
Java
// Java program to demonstrate simple GregorianCalendar // operations import java.util.Locale; import java.util.TimeZone; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarGFG { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of GregorianCalendar class by specifying year, month, dayOfMonth, hourOfDay, minute and second */ GregorianCalendar gcal = new GregorianCalendar(2018, 3, 30, 10, 21, 51); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + Locale.getDefault().getDisplayName()); } // end of main function } // end of class
Producción:
Date: Apr 30, 2018 Time: 10:21:51 AM Time Zone: Coordinated Universal Time Locale: English (United States)
5. Pasando timeZone como parámetro:
Java
// Java program to demonstrate simple GregorianCalendar // operations import java.util.TimeZone; import java.util.Locale; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarTest { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of TimeZone class to create an object of GregorianCalendar class to assign an user defined time zone (GMT + 5:30)*/ TimeZone tz = TimeZone.getTimeZone("GMT+5:30"); GregorianCalendar gcal = new GregorianCalendar(tz); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + Locale.getDefault().getDisplayCountry()); } // end of main function } // end of class
Producción:
Date: May 1, 2018 Time: 4:24:7 AM Time Zone: GMT+05:30 Locale: United States
6. Al pasar la configuración regional como parámetro:
Java
// Java program to demonstrate simple GregorianCalendar // operations import java.util.TimeZone; import java.util.Locale; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarTest { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of Locale class to create an object of GregorianCalendar class to assign an user defined locale (India)*/ Locale l = new Locale("en", "IN"); GregorianCalendar gcal = new GregorianCalendar(l); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + l.getDisplayCountry()); } // end of main function } // end of class
Producción:
Date: Apr 30, 2018 Time: 10:58:30 PM Time Zone: Coordinated Universal Time Locale: India
7. Pasando timeZone y locale como parámetros:
Java
// Java program to demonstrate simple GregorianCalendar // operations import java.util.TimeZone; import java.util.Locale; import java.util.Calendar; import java.util.GregorianCalendar; public class GregorianCalendarTest { public static void main(String args[]) { // declaring an array to store month abbreviations String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; // declaring an array to store AM or PM String amPm[] = { "AM", "PM" }; /* Creating an object of TimeZone class and Locale class to create an object of GregorianCalendar class to assign an user defined time zone (GMT + 5:30) and locale (India)*/ TimeZone tz = TimeZone.getTimeZone("GMT+5:30"); Locale l = new Locale("en", "IN"); GregorianCalendar gcal = new GregorianCalendar(tz, l); // displaying the date, time, time zone and locale System.out.print("Date: " + month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " + gcal.get(Calendar.YEAR) + "\n" + "Time: " + gcal.get(Calendar.HOUR) + ":" + gcal.get(Calendar.MINUTE) + ":" + gcal.get(Calendar.SECOND) + " " + amPm[gcal.get(Calendar.AM_PM)] + "\n" + "Time Zone: " + gcal.getTimeZone().getDisplayName() + "\n" + "Locale: " + l.getDisplayCountry()); } // end of main function } // end of class
Producción:
Date: May 1, 2018 Time: 4:34:59 AM Time Zone: GMT+05:30 Locale: India
Referencia:
GregorianCalendar (Java Platform SE 8) – Centro de ayuda de Oracle