Fecha y hora de Java

Java proporciona varios conjuntos de API de fecha y hora. A continuación se presenta una comparación de las principales categorías y un resumen de los métodos comunes:

Categoría Clases principales Seguridad de hilos Mutabilidad Versión de Java Características
Fecha tradicional Date, Calendar,GregorianCalendar no Mutable 1.0+ Muchos defectos de diseño, no se recomienda su uso
Nueva fecha y hora LocalDate, LocalTime, LocalDateTime, ZonedDateTime, ChronoUnit Sí Inmutable 8+ Bien diseñado, recomendado su uso
Marca de tiempo Instant Sí Inmutable 8+ Tiempo de máquina, preciso hasta nanosegundos
Formateo DateTimeFormatter Sí Inmutable 8+ Clase de formateo segura para hilos

LocalDate/DateTimeFormatter

LocalDate/DateTimeFormatter son clases de fecha introducidas en Java 8. LocalDate se usa para representar una fecha sin hora (año-mes-día), y DateTimeFormatter se usa para formatear y analizar objetos de fecha y hora.

Ejemplo

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class EjemploTest {
    public static void main(String[] args) {
        // Obtener la fecha actual
        LocalDate today = LocalDate.now();
        System.out.println("Fecha actual: " + today);
       
        // Crear una fecha específica
        LocalDate nationalDay = LocalDate.of(2025, 10, 1);
        System.out.println("Día Nacional: " + nationalDay);
       
        // Sumar y restar fechas
        LocalDate tomorrow = today.plusDays(1);
        LocalDate nextMonth = today.plusMonths(1);
        LocalDate lastYear = today.minusYears(1);
       
        System.out.println("Mañana: " + tomorrow);
        System.out.println("Próximo mes: " + nextMonth);
        System.out.println("Hoy hace un año: " + lastYear);
    }
}

La salida de los ejemplos anteriores es:

当前日期: 2025-05-01
国庆节: 2025-10-01
明天: 2025-05-02
下个月: 2025-06-01
去年今天: 2024-05-01
  1. En proyectos nuevos, priorizar el uso del paquete java.time (Java 8+)

  2. Evitar el uso de las antiguas clases Date y Calendar

  3. Distinguir claramente el uso de zonas horarias:

    • Sin necesidad de zona horaria: LocalDate/LocalTime/LocalDateTime

    • Con necesidad de zona horaria: ZonedDateTime

  4. Considerar la seguridad de hilos al formatear: usar DateTimeFormatter en lugar de SimpleDateFormat

  5. Interacción con bases de datos:

    • JDBC 4.2+ admite directamente los tipos java.time

    • Versiones antiguas se pueden convertir a java.sql.Date/Timestamp

1. LocalDate (fecha)

Ejemplo

LocalDate today = LocalDate.now();
LocalDate date = LocalDate.of(2023, Month.JUNE, 15);
int year = date.getYear();  // 2023
Month month = date.getMonth();  // JUNE
int day = date.getDayOfMonth();  // 15
LocalDate nextWeek = today.plusWeeks(1);
boolean isLeap = date.isLeapYear();  // Si es año bisiesto

2. LocalTime (hora)

Ejemplo

LocalTime now = LocalTime.now();
LocalTime time = LocalTime.of(14, 30, 45);  // 14:30:45
int hour = time.getHour();  // 14
int minute = time.getMinute();  // 30
LocalTime nextHour = time.plusHours(1);

3. LocalDateTime (fecha y hora)

Ejemplo

LocalDateTime ldt = LocalDateTime.now();
LocalDateTime dt = LocalDateTime.of(2023, 6, 15, 14, 30);
LocalDateTime nextMonth = dt.plusMonths(1);

4. ZonedDateTime (fecha y hora con zona horaria)

Ejemplo

ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));
ZonedDateTime nyTime = zdt.withZoneSameInstant(ZoneId.of("America/New_York"));
ZoneId zone = zdt.getZone();  // Obtener la zona horaria

5. Instant (marca de tiempo)

Ejemplo

Instant now = Instant.now();  // Obtener la marca de tiempo actual
Instant later = now.plusSeconds(60);  // Después de 60 segundos
long epochMilli = now.toEpochMilli();  // Obtener la marca de tiempo en milisegundos

Clase Date

El paquete java.util proporciona la clase Date para encapsular la fecha y hora actuales. La clase Date proporciona dos constructores para instanciar objetos Date.

El primer constructor utiliza la fecha y hora actuales para inicializar el objeto.

Date( )

El segundo constructor recibe un parámetro, que es la cantidad de milisegundos desde el 1 de enero de 1970.

Date(long millisec)

Después de crear el objeto Date, se pueden llamar los siguientes métodos.

N.º Método y descripción
1 boolean after(Date date)
Devuelve true si el objeto Date que llama a este método es posterior a la fecha especificada; de lo contrario, devuelve false.
2 boolean before(Date date)
Devuelve true si el objeto Date que llama a este método es anterior a la fecha especificada; de lo contrario, devuelve false.
3 Object clone( )
Devuelve una copia de este objeto.
4 int compareTo(Date date)
Compara el objeto Date que llama a este método con la fecha especificada. Devuelve 0 si ambos son iguales. Devuelve un número negativo si el objeto que llama es anterior a la fecha especificada. Devuelve un número positivo si el objeto que llama es posterior a la fecha especificada.
5 int compareTo(Object obj)
Si obj es de tipo Date, la operación es equivalente a compareTo(Date). De lo contrario, lanza una ClassCastException.
6 boolean equals(Object date)
Devuelve true cuando el objeto Date que llama a este método es igual a la fecha especificada; de lo contrario, devuelve false.
7 long getTime( )
Devuelve el número de milisegundos que representa este objeto Date desde el 1 de enero de 1970, 00:00:00 GMT.
8 int hashCode( )
Devuelve el valor del código hash de este objeto.
9 void setTime(long time)
 
Establece la fecha y hora usando el número de milisegundos transcurridos desde el 1 de enero de 1970, 00:00:00 GMT, indicado por time.
10 String toString( )
Convierte este objeto Date a una cadena de la forma: dow mon dd hh:mm:ss zzz yyyy, donde: dow es el día de la semana (Sun, Mon, Tue, Wed, Thu, Fri, Sat).

Obtener la fecha y hora actuales

En Java, obtener la fecha y hora actuales es muy sencillo. Usa el método toString() del objeto Date para imprimir la fecha y hora actuales, como se muestra a continuación:

Ejemplo

import java.util.Date; public class DateDemo { public static void main(String[] args) { //Inicializar el objeto Date Date date = new Date(); //Usar la función toString() para mostrar la fecha y hora System.out.println(date.toString()); } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

Mon May 04 09:51:52 CDT 2013

Comparación de fechas

Java utiliza los siguientes tres métodos para comparar dos fechas:

  • Usar el método getTime() para obtener los dos valores de fecha (milisegundos transcurridos desde el 1 de enero de 1970) y luego comparar estos dos valores.
  • Usar los métodos before(), after() y equals(). Por ejemplo, el día 12 de un mes es anterior al 18, entoncesnew Date(99, 2, 12).before(new Date (99, 2, 18))devuelve true.
  • Usar el método compareTo(), que está definido por la interfaz Comparable y la clase Date implementa esta interfaz.

1. Comparar usando el método getTime()

Este método compara los milisegundos transcurridos desde el 1 de enero de 1970 (época Unix) de los objetos de fecha.

Ejemplo

import java.util.Date;

public class DateComparison {
    public static void main(String[] args) {
        Date date1 = new Date(121, 5, 15); // 15 de junio de 2021
        Date date2 = new Date(121, 5, 20); // 20 de junio de 2021
       
        // Comparar los milisegundos
        if (date1.getTime() < date2.getTime()) {
            System.out.println("date1 es anterior a date2");
        } else if (date1.getTime() > date2.getTime()) {
            System.out.println("date1 es posterior a date2");
        } else {
            System.out.println("Las dos fechas son iguales");
        }
    }
}

Salida:

date1 在 date2 之前

2. Usar los métodos before(), after() y equals()

Estos métodos son métodos de comparación incorporados de la clase Date, con semántica más clara.

Ejemplo

import java.util.Date;

public class DateComparison {
    public static void main(String[] args) {
        Date date1 = new Date(121, 5, 15); // 15 de junio de 2021
        Date date2 = new Date(121, 5, 20); // 20 de junio de 2021
       
        // Usar el método before()
        System.out.println("¿date1 es anterior a date2? " + date1.before(date2));
       
        // Usar el método after()
        System.out.println("¿date1 es posterior a date2? " + date1.after(date2));
       
        // Usar el método equals()
        System.out.println("¿Las dos fechas son iguales? " + date1.equals(date2));
    }
}

Salida:

date1 在 date2 之前吗? true
date1 在 date2 之后吗? false
两个日期相同吗? false

3. Usar el método compareTo()

La clase Date implementa la interfaz Comparable y se puede utilizar el método compareTo() para comparar.

Ejemplo

import java.util.Date;

public class DateComparison {
    public static void main(String[] args) {
        Date date1 = new Date(121, 5, 15); // 15 de junio de 2021
        Date date2 = new Date(121, 5, 20); // 20 de junio de 2021
       
        int result = date1.compareTo(date2);
       
        if (result < 0) {
            System.out.println("date1 está antes que date2");
        } else if (result > 0) {
            System.out.println("date1 está después que date2");
        } else {
            System.out.println("Las dos fechas son iguales");
        }
    }
}

Salida:

date1 在 date2 之前

Formatear fechas con SimpleDateFormat

SimpleDateFormat es una clase que formatea y analiza fechas de forma sensible al locale. SimpleDateFormat te permite elegir cualquier formato de fecha y hora definido por el usuario. Por ejemplo:

Ejemplo

import java.util.*; import java.text.*; public class DateDemo { public static void main(String[] args) { Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss"); System.out.println("La hora actual es:" + ft.format(dNow)); } }

SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

Esta línea de código establece el formato de conversión, donde yyyy es el año completo, MM es el mes, dd es el día, y HH:mm:ss son horas, minutos y segundos.

Nota: algunos formatos usan mayúsculas y otros minúsculas; por ejemplo, MM es el mes, mm son los minutos; HH es el formato de 24 horas, mientras que hh es el de 12 horas.

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

当前时间为: 2018-09-06 10:16:34

Códigos de formato para fecha y hora

Las cadenas de patrón de tiempo se utilizan para especificar el formato de tiempo. En este patrón, todas las letras ASCII se reservan como letras de patrón, definidas a continuación:

Letra Descripción Ejemplo
G Marcador de era AD
y Año de cuatro dígitos 2001
M Mes July or 07
d Día del mes 10
h Hora en formato A.M./P.M. (1~12) 12
H Hora del día (0~23) 22
m Minutos 30
s Segundos 55
S Milisegundos 234
E Día de la semana Tuesday
D Día del año 360
F Día de la semana dentro del mes 2 (second Wed. in July)
w Semana del año 40
W Semana del mes 1
a Marcador A.M./P.M. PM
k Hora del día (1~24) 24
K Hora en formato A.M./P.M. (0~11) 10
z Zona horaria Eastern Standard Time
' Delimitador de texto Delimiter
" Comilla simple `

Formatear fechas con printf

El método printf puede formatear horas y fechas fácilmente. Utiliza un formato de dos letras que comienza con%ty termina con una de las letras de la siguiente tabla.

  • %tY: genera el año de cuatro dígitos, por ejemplo: 2023
  • %ty: genera el año de dos dígitos, por ejemplo: 23
  • %tm: genera el mes de dos dígitos, por ejemplo: 02
  • %tB: genera el nombre completo del mes, por ejemplo: February
  • %tb: genera la abreviatura del mes, por ejemplo: Feb
  • %tA: genera el nombre completo del día de la semana, por ejemplo: Wednesday
  • %ta: genera la abreviatura del día de la semana, por ejemplo: Wed
  • %td: genera el día del mes de dos dígitos, por ejemplo: 24
  • %te: genera el día del mes con uno o dos dígitos, por ejemplo: 24 o 02
  • %tH: genera la hora en formato de 24 horas, por ejemplo: 23
  • %tI: genera la hora en formato de 12 horas, por ejemplo: 11
  • %tM: genera los minutos, por ejemplo: 45
  • %tS: genera los segundos, por ejemplo: 30
  • %tp: genera AM o PM, por ejemplo: AM o PM
  • %tZ: genera la zona horaria, por ejemplo: GMT+08:00

Conversor

Descripción

Ejemplo

%tc

Incluye toda la información de fecha y hora

Sábado Oct 27 14:21:20 CST 2007

%tF

Formato "año-mes-día"

2007-10-27

%tD

Formato "mes/día/año"

10/27/07

%tr

Formato "HH:MM:SS PM" (12 horas)

02:25:51 PM

%tT

Formato "HH:MM:SS" (24 horas)

14:28:16

%tR

Formato "HH:MM" (24 horas)

14:28

MásprintfPara más información, consulte:Ejemplos de formato de salida printf en Java

Ejemplo

Ejemplo

import java.util.Date;
public class DateFormatExample {
   public static void main(String[] args) {
      Date date = new Date();
      System.out.printf("%tY-%tm-%td %tH:%tM:%tS %tZ", date, date, date, date, date, date, date);
   }
}

El resultado de la ejecución es:

2023-02-24 13:34:45 GMT+08:00

Ejemplo

import java.util.Date; public class DateDemo { public static void main(String[] args) { //Inicializar el objeto Date Date date = new Date(); //Uso de c System.out.printf("Información completa de fecha y hora: %tc%n",date); //Uso de f System.out.printf("Formato año-mes-día: %tF%n",date); //Uso de d System.out.printf("Formato mes/día/año: %tD%n",date); //Uso de r System.out.printf("Formato HH:MM:SS PM (12 horas): %tr%n",date); //Uso de t System.out.printf("Formato HH:MM:SS (24 horas): %tT%n",date); //Uso de R System.out.printf("Formato HH:MM (24 horas): %tR",date); } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

全部日期和时间信息:星期一 九月 10 10:43:36 CST 2012  
年-月-日格式:2012-09-10  
月/日/年格式:09/10/12  
HH:MM:SS PM格式(12时制):10:43:36 上午  
HH:MM:SS格式(24时制):10:43:36  
HH:MM格式(24时制):10:43  

Si necesitas proporcionar la fecha repetidamente, usar este método para formatear cada una de sus partes resulta algo complicado. Por lo tanto, puedes utilizar una cadena de formato que indique el índice del argumento que se va a formatear.

El índice debe ir inmediatamente después de%y debe terminar con$fin. Por ejemplo:

Ejemplo

import java.util.Date; public class DateDemo { public static void main(String[] args) { //Inicializar el objeto Date Date date = new Date(); //Usar toString() para mostrar fecha y hora System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date); } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

Due date: February 09, 2014

O puedes usar el indicador <. Indica que el argumento formateado anteriormente se va a utilizar de nuevo. Por ejemplo:

Ejemplo

import java.util.Date; public class DateDemo { public static void main(String[] args) { //Inicializar el objeto Date Date date = new Date(); //Mostrar la hora formateada System.out.printf("%s %tB %<te, %<tY", "Due date:", date); } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

Due date: February 09, 2014

Los conversores de formato de fecha permiten generar nuevas cadenas a partir de una fecha mediante conversores específicos. Estos conversores de fecha son los siguientes:

Ejemplo

import java.util.*; public class DateDemo { public static void main(String[] args) { Date date=new Date(); //Uso de b, abreviatura del mes String str=String.format(Locale.US,"Abreviatura del mes en inglés: %tb",date); System.out.println(str); System.out.printf("Abreviatura del mes local: %tb%n",date); //Uso de B, nombre completo del mes str=String.format(Locale.US,"Nombre completo del mes en inglés: %tB",date); System.out.println(str); System.out.printf("Nombre completo del mes local: %tB%n",date); //Uso de a, abreviatura del día de la semana str=String.format(Locale.US,"Abreviatura del día de la semana en inglés: %ta",date); System.out.println(str); //Uso de A, nombre completo del día de la semana System.out.printf("Abreviatura local del día de la semana: %tA%n",date); //Uso de C, los dos primeros dígitos del año System.out.printf("Los dos primeros dígitos del año (si tiene menos de dos dígitos se rellena con 0 a la izquierda): %tC%n",date); //Uso de y, los dos últimos dígitos del año System.out.printf("Los dos últimos dígitos del año (si tiene menos de dos dígitos se rellena con 0 a la izquierda): %ty%n",date); //Uso de j, día del año System.out.printf("Número de días del año (es decir, el día del año): %tj%n",date); //Uso de m, mes System.out.printf("Mes en dos dígitos (si tiene menos de dos dígitos se rellena con 0 a la izquierda): %tm%n",date); //Uso de d, día (dos dígitos, con cero a la izquierda si es necesario) System.out.printf("Día en dos dígitos (si tiene menos de dos dígitos se rellena con 0 a la izquierda): %td%n",date); //Uso de e, día (un dígito sin cero a la izquierda) System.out.printf("Día del mes (sin cero a la izquierda): %te",date); } }

El resultado de salida es:

英文月份简称:May
本地月份简称:五月
英文月份全称:May
本地月份全称:五月
英文星期的简称:Thu
本地星期的简称:星期四
年的前两位数字(不足两位前面补0):20
年的后两位数字(不足两位前面补0):17
一年中的天数(即年的第几天):124
两位数字的月份(不足两位前面补0):05
两位数字的日(不足两位前面补0):04
月份的日(前面不补0):4

Analizar cadenas como fecha/hora

La clase SimpleDateFormat tiene algunos métodos adicionales, en particular parse(), que intenta analizar una cadena de acuerdo con el formato almacenado en el objeto SimpleDateFormat dado. Por ejemplo:

Ejemplo

import java.util.*; import java.text.*; public class DateDemo { public static void main(String[] args) { SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); String input = args.length == 0 ? "1818-11-11" : args[0]; System.out.print(input + " Parses as "); Date t; try { t = ft.parse(input); System.out.println(t); } catch (ParseException e) { System.out.println("Unparseable using " + ft); } } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

$ java DateDemo
1818-11-11 Parses as Wed Nov 11 00:00:00 GMT 1818
$ java DateDemo 2007-12-01
2007-12-01 Parses as Sat Dec 01 00:00:00 GMT 2007

Java dormir (sleep)

sleep() hace que el hilo actual entre en estado de estancamiento (bloquea el hilo actual), cediendo el uso de la CPU; el objetivo es evitar que el hilo actual monopolice los recursos de CPU del proceso, dejando tiempo para que otros hilos tengan la oportunidad de ejecutarse.

Puedes hacer que el programa duerma durante un milisegundo o durante cualquier período de tiempo, incluso tan largo como la vida de tu computadora. Por ejemplo, el siguiente programa dormirá durante 3 segundos:

Ejemplo

import java.util.*; public class SleepDemo { public static void main(String[] args) { try { System.out.println(new Date( ) + "\n"); Thread.sleep(1000*3); //Dormir 3 segundos System.out.println(new Date( ) + "\n"); } catch (Exception e) { System.out.println("Got an exception!"); } } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

Thu Sep 17 10:20:30 CST 2015

Thu Sep 17 10:20:33 CST 2015

Medir el tiempo

El siguiente ejemplo muestra cómo medir intervalos de tiempo (en milisegundos):

Ejemplo

import java.util.*; public class DiffDemo { public static void main(String[] args) { try { long start = System.currentTimeMillis( ); System.out.println(new Date( ) + "\n"); Thread.sleep(5*60*10); System.out.println(new Date( ) + "\n"); long end = System.currentTimeMillis( ); long diff = end - start; System.out.println("Difference is : " + diff); } catch (Exception e) { System.out.println("Got an exception!"); } } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

Fri Jan 08 09:48:47 CST 2016

Fri Jan 08 09:48:50 CST 2016

Difference is : 3019

Clase Calendar

Ahora ya podemos formatear y crear un objeto Date, pero ¿cómo podemos establecer y obtener partes específicas de los datos de fecha, como la hora, el día o los minutos? ¿Y cómo podemos sumar o restar valores a estas partes de la fecha? La respuesta es usar la clase Calendar.

La clase Calendar es mucho más potente que la clase Date, y también es más compleja en su implementación.

La clase Calendar es una clase abstracta; en la práctica se implementan objetos de una subclase específica. El proceso de creación de objetos es transparente para el programador, solo necesita usar el método getInstance.

Crear un objeto Calendar que represente la fecha actual del sistema

Calendar c = Calendar.getInstance();//默认是当前日期

Crear un objeto Calendar con una fecha específica

Para usar la clase Calendar y representar un tiempo específico, primero se debe crear un objeto Calendar y luego establecer los parámetros de año, mes y día en ese objeto.

//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);

Tipos de campos de los objetos de la clase Calendar

En la clase Calendar se utilizan las siguientes constantes con diferentes significados; muchas clases dentro del JDK adoptan esta misma idea.

ConstanteDescripción
Calendar.YEARAño
Calendar.MONTHMes
Calendar.DATEFecha
Calendar.DAY_OF_MONTHFecha, con exactamente el mismo significado que el campo anterior.
Calendar.HOURHora en formato de 12 horas.
Calendar.HOUR_OF_DAYHora en formato de 24 horas.
Calendar.MINUTEMinuto
Calendar.SECONDsegundo
Calendar.DAY_OF_WEEKDía de la semana

Configuración de información de los objetos de la clase Calendar

Configuración con Set

Por ejemplo:

Calendar c1 = Calendar.getInstance();

Llamada:

public final void set(int year,int month,int date)
c1.set(2009, 6, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12

Configuración mediante el tipo de campo.

Si solo se establece un campo, por ejemplo el valor de la fecha, se puede usar el siguiente método set:

public void set(int field,int value)

Establece la fecha representada por el objeto c1 al día 10; todos los demás valores se recalculan.

c1.set(Calendar.DATE,10);

Establece el año representado por el objeto c1 a 2008; todos los demás valores se recalculan.

c1.set(Calendar.YEAR,2008);

El significado de set para otros campos se deduce de manera similar.

Configuración con Add

Calendar c1 = Calendar.getInstance();

Suma 10 a la fecha del objeto c1, es decir, c1 representa la fecha 10 días después; todos los demás valores se recalculan.

c1.add(Calendar.DATE, 10);

Resta 10 a la fecha del objeto c1, es decir, c1 representa la fecha 10 días antes; todos los demás valores se recalculan.

c1.add(Calendar.DATE, -10);

El significado de add para otros campos se deduce de manera similar.

Obtención de información de los objetos de la clase Calendar

Calendar c1 = Calendar.getInstance(); //Obtener el año int year = c1.get(Calendar.YEAR); //Obtener el mes int month = c1.get(Calendar.MONTH) + 1; //Obtener la fecha int date = c1.get(Calendar.DATE); //Obtener la hora int hour = c1.get(Calendar.HOUR_OF_DAY); //Obtener el minuto int minute = c1.get(Calendar.MINUTE); //Obtener el segundo int second = c1.get(Calendar.SECOND); //Obtener el día de la semana (nota: esto es diferente de la clase Date: 1 representa domingo, 2 lunes, 3 martes, y así sucesivamente). int day = c1.get(Calendar.DAY_OF_WEEK);

Clase GregorianCalendar

La clase Calendar implementa el calendario gregoriano; GregorianCalendar es una implementación concreta de la clase Calendar.

El método getInstance() de Calendar devuelve un objeto GregorianCalendar inicializado por defecto con la configuración regional y la zona horaria actuales. GregorianCalendar define dos campos: AD y BC. Estos representan las dos eras definidas por el calendario gregoriano.

A continuación se enumeran varios constructores del objeto GregorianCalendar:

N.º Constructor y descripción
1 GregorianCalendar()
Construye un GregorianCalendar predeterminado usando la hora actual en la zona horaria predeterminada con la configuración regional predeterminada.
2 GregorianCalendar(int year, int month, int date)
Construye un GregorianCalendar con la fecha dada en la zona horaria predeterminada con la configuración regional predeterminada.
3 GregorianCalendar(int year, int month, int date, int hour, int minute)
Construye un GregorianCalendar con la fecha y hora dadas para la zona horaria predeterminada con la configuración regional predeterminada.
4 GregorianCalendar(int year, int month, int date, int hour, int minute, int second)
Construye un GregorianCalendar con la fecha y hora dadas para la zona horaria predeterminada con la configuración regional predeterminada.
5 GregorianCalendar(Locale aLocale)
Construye un GregorianCalendar basado en la hora actual en la zona horaria predeterminada con la configuración regional dada.
6 GregorianCalendar(TimeZone zone)
Construye un GregorianCalendar basado en la hora actual en la zona horaria dada con la configuración regional predeterminada.
7 GregorianCalendar(TimeZone zone, Locale aLocale)
Construye un GregorianCalendar basado en la hora actual en la zona horaria dada con la configuración regional dada.

Aquí hay una lista de algunos métodos útiles proporcionados por la clase GregorianCalendar:

N.º Método y descripción
1 void add(int field, int amount)
Agrega la cantidad de tiempo especificada (con signo) al campo de calendario dado según las reglas del calendario.
2 protected void computeFields()
Convierte los milisegundos UTC en valores de campo de tiempo.
3 protected void computeTime()
Sobrescribe Calendar, convierte los valores de campo de tiempo a milisegundos UTC.
4 boolean equals(Object obj)
Compara este GregorianCalendar con el Object especificado.
5 int get(int field)
Obtiene el valor de tiempo del campo especificado.
6 int getActualMaximum(int field)
Devuelve el valor máximo del campo dado para la fecha actual.
7 int getActualMinimum(int field)
Devuelve el valor mínimo del campo dado para la fecha actual.
8 int getGreatestMinimum(int field)
Devuelve el mínimo más alto del campo de calendario dado para esta instancia de GregorianCalendar.
9 Date getGregorianChange()
Obtiene la fecha de cambio del calendario gregoriano.
10 int getLeastMaximum(int field)
Devuelve el máximo más bajo del campo de calendario dado para esta instancia de GregorianCalendar.
11 int getMaximum(int field)
Devuelve el valor máximo del campo de calendario dado para esta instancia de GregorianCalendar.
12 Date getTime()
Obtiene la hora actual del calendario.
13 long getTimeInMillis()
Obtiene la hora actual del calendario representada como un long.
14 TimeZone getTimeZone()
Obtiene la zona horaria.
15 int getMinimum(int field)
Devuelve el valor mínimo del campo dado.
16 int hashCode()
Sobrescribe hashCode.
17 boolean isLeapYear(int year)
Determina si el año dado es bisiesto.
18 void roll(int field, boolean up)
Agrega o resta (arriba/abajo) una sola unidad de tiempo en el campo de tiempo dado, sin cambiar los campos mayores.
19 void set(int field, int value)
Establece el campo de tiempo con el valor dado.
20 void set(int year, int month, int date)
Establece los valores de año, mes y día.
21 void set(int year, int month, int date, int hour, int minute)
Establece los valores de año, mes, día, hora y minuto.
22 void set(int year, int month, int date, int hour, int minute, int second)
Establece los valores de año, mes, día, hora, minuto y segundo.
23 void setGregorianChange(Date date)
Establece la fecha de cambio del GregorianCalendar.
24 void setTime(Date date)
Establece la hora actual del Calendar con la fecha dada.
25 void setTimeInMillis(long millis)
Establece la hora actual del Calendar con el valor long de milisegundos dado.
26 void setTimeZone(TimeZone value)
Establece la zona horaria actual con el valor de zona horaria dado.
27 String toString()
Devuelve la cadena que representa el calendario.

Ejemplo

Ejemplo

import java.util.*; public class GregorianCalendarDemo { public static void main(String[] args) { String months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; int year; //Inicializar el calendario gregoriano //Usar la fecha y hora actuales //Por defecto, hora y zona horaria locales GregorianCalendar gcalendar = new GregorianCalendar(); //Mostrar la información de la fecha y hora actuales System.out.print("Date: "); System.out.print(months[gcalendar.get(Calendar.MONTH)]); System.out.print(" " + gcalendar.get(Calendar.DATE) + " "); System.out.println(year = gcalendar.get(Calendar.YEAR)); System.out.print("Time: "); System.out.print(gcalendar.get(Calendar.HOUR) + ":"); System.out.print(gcalendar.get(Calendar.MINUTE) + ":"); System.out.println(gcalendar.get(Calendar.SECOND)); //Probar si el año actual es bisiesto if(gcalendar.isLeapYear(year)) { System.out.println("El año actual es bisiesto"); } else { System.out.println("El año actual no es bisiesto"); } } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

Date: Apr 22 2009
Time: 11:25:27
当前年份不是闰年

Para la lista completa de la clase Calendar, puedes consultar la documentación estándar deJava。

Otras extensiones