El paquete java.util proporciona la clase Date para encapsular la fecha y hora actuales. La clase Date proporciona dos constructores para crear instancias de objetos Date.
El primer constructor inicializa el objeto con la fecha y hora actuales.
Fecha( )
El segundo constructor recibe un parámetro, que es el número de milisegundos desde el 1 de enero de 1970.
Fecha (milisegundos largos)
Una vez creado el objeto Date, puede llamar a los siguientes métodos.
número de serie | Métodos y descripción |
---|---|
1 | boolean after(Fecha fecha) devuelve verdadero si el objeto Fecha que llama a este método es posterior a la fecha especificada; de lo contrario, devuelve falso. |
2 | booleano antes (Fecha) devuelve verdadero si el objeto Fecha que llama a este método es anterior a la fecha especificada; de lo contrario, devuelve falso. |
3 | Clon de objeto( ) devuelve una copia de este objeto. |
4 | int compareTo(Date date) compara el objeto Date cuando se llama a este método con la fecha especificada. Cuando los dos son iguales, se devuelve 0. Si el objeto que llama es anterior a la fecha especificada, se devuelve un número negativo. El objeto que llama devuelve un número positivo después de la fecha especificada. |
5 | int compareTo(Object obj) Si obj es un tipo de fecha, la operación es equivalente a compareTo(Date). De lo contrario, arroja ClassCastException. |
6 | booleano igual (fecha del objeto) devuelve verdadero cuando el objeto Fecha que llama a este método es igual a la fecha especificada; de lo contrario, devuelve falso. |
7 | long getTime( ) devuelve el número de milisegundos representados por este objeto Fecha desde el 1 de enero de 1970 a las 00:00:00 GMT. |
8 | int hashCode() devuelve el valor del código hash de este objeto. |
9 | void setTime(long time) establece la hora y la fecha utilizando el número de milisegundos desde el 1 de enero de 1970 a las 00:00:00 GMT. |
10 | String toString() convierte un objeto Date en una representación String y devuelve la cadena. |
Obtener la fecha y hora actuales en Java es muy simple. Utilice el método toString() del objeto Date para imprimir la fecha y hora actuales, como se muestra a continuación:
importar java.util.Fecha;
clase pública principal {
público estático vacío principal (String args []) {
//Inicializar objeto Fecha Fecha fecha = nueva Fecha();
//Utiliza la función toString() para mostrar la fecha y la hora System.out.println(date.toString());
}
}
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
Lunes 04 de mayo 09:51:52 CDT 2013
Java utiliza los siguientes tres métodos para comparar dos fechas:
Utilice el método getTime() para obtener dos fechas (el número de milisegundos desde el 1 de enero de 1970) y luego compare los dos valores.
Utilice los métodos antes(), después() y igual(). Por ejemplo, si el día 12 de un mes es anterior al 18, entonces new Date(99, 2, 12).before(new Date (99, 2, 18)) devuelve verdadero.
Utilice el método compareTo(), que está definido por la interfaz Comparable, y la clase Date implementa esta interfaz.
SimpleDateFormat es una clase para formatear y analizar fechas según la configuración regional. SimpleDateFormat le permite elegir cualquier formato de fecha y hora definido por el usuario para ejecutar. Por ejemplo:
importar java.util.*;
importar java.texto.*;
clase pública principal {
público estático vacío principal (String args []) {
Fecha dNow = nueva fecha( );
FormatoFechaSimple pies =
nuevo SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Fecha actual: " + ft.format(dNow));
}
}
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
Fecha actual: domingo 18.07.2004 a las 04:14:09 p.m. PDT
La cadena de patrón de hora se utiliza para especificar el formato de hora. En este modo, todas las letras ASCII están reservadas como letras de patrón, definidas de la siguiente manera:
carta | describir | Ejemplo |
---|---|---|
GRAMO | marca de época | ANUNCIO |
y | año de cuatro dígitos | 2001 |
METRO | mes | julio o 07 |
d | fecha del mes | 10 |
h | Horas de formato AM/PM (1~12) | 12 |
h | Hora del día (0~23) | Veintidós |
metro | minutos | 30 |
s | artículos de segunda clase | 55 |
S | milisegundos | 234 |
mi | día de la semana | Martes |
D | dias del año | 360 |
F | Día de la semana del mes. | 2 (segundo miércoles de julio) |
w | semana del año | 40 |
W. | Semana del mes | 1 |
a | Marca AM/PM | P.M |
k | Hora del día (1~24) | veinticuatro |
k | Hora en formato AM/PM (0~11) | 10 |
z | huso horario | Hora estándar del este |
' | delimitador de texto | Delimitador |
" | comillas simples | ` |
El método printf facilita el formato de horas y fechas. Utilice el formato de dos letras, que comienza con t y termina con una letra de la siguiente tabla. Por ejemplo:
importar java.util.Fecha;
clase pública principal {
público estático vacío principal (String args []) {
//Inicializar objeto Fecha Fecha fecha = nueva Fecha();
// Utilice toString() para mostrar la fecha y la hora String str = String.format("Fecha/Hora actual: %tc", fecha);
System.out.printf(cadena);
}
}
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
Fecha/hora actual: sábado 15 de diciembre a las 16:37:57 MST de 2012
Si necesita proporcionar una fecha repetidamente, formatear cada parte de esta manera es un poco complicado. Por lo tanto, se puede utilizar una cadena de formato para indicar el índice del parámetro que se va a formatear.
El índice debe seguir inmediatamente a % y debe terminar en $. Por ejemplo:
importar java.util.Fecha;
clase pública principal {
público estático vacío principal (String args []) {
//Inicializar objeto Fecha Fecha fecha = nueva Fecha();
// Usa toString() para mostrar la fecha y la hora System.out.printf("%1$s %2$tB %2$td, %2$tY",
"Fecha de vencimiento:", fecha);
}
}
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
Fecha límite: 09 de febrero de 2004
Alternativamente, puede utilizar la bandera <. Indica que los parámetros previamente formateados se van a utilizar nuevamente. Por ejemplo:
importar java.util.Fecha;
clase pública principal {
público estático vacío principal (String args []) {
//Inicializar objeto Fecha Fecha fecha = nueva Fecha();
// Mostrar hora de formato System.out.printf("%s %tB %<te, %<tY",
"Fecha de vencimiento:", fecha);
}
}
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
Fecha límite: 09 de febrero de 2004
personaje | describir | ejemplo |
do | Fecha y hora completas | Lunes 04 de mayo 09:51:52 CDT 2009 |
F | Fecha del formato ISO 8601 | 2004-02-09 |
D | Fecha en formato estadounidense (mes/día/año) | 09/02/2004 |
t | 24 horas | 18:05:19 |
r | 12 horas | 06:05:19 pm |
R | Hora de 24 horas, excluyendo segundos. | 18:05 |
Y | Año de 4 dígitos (incluido el 0 inicial) | 2004 |
y | Últimos 2 dígitos del año (incluido el 0 inicial) | 04 |
do | Los primeros 2 dígitos del año (incluido el 0 inicial) | 20 |
B | nombre completo del mes | Febrero |
b | abreviatura del mes | Feb |
norte | Mes de 2 dígitos (incluido el 0 inicial) | 02 |
d | Fecha de 2 dígitos (incluido el 0 inicial) | 03 |
mi | Fecha de 2 dígitos (sin incluir el 0 inicial) | 9 |
A | Nombre completo de la semana | Lunes |
a | abreviatura de semana | Lun |
j | Año de 3 dígitos (incluido el 0 inicial) | 069 |
h | Hora de 2 dígitos (incluido el 0 inicial), de 00 a 23 | 18 |
k | Hora de 2 dígitos (sin incluir el 0 inicial), 0 a 23 | 18 |
I | Hora de 2 dígitos (incluido el 0 inicial), 01 a 12 | 06 |
yo | Hora de 2 dígitos (excluyendo el 0 inicial), 1 a 12 | 6 |
METRO | Minuto de 2 dígitos (incluido el 0 inicial) | 05 |
S | Segundos de 2 dígitos (incluidos los ceros a la izquierda) | 19 |
l | 3 dígitos de milisegundos (incluidos los ceros iniciales) | 047 |
norte | Nanosegundo de 9 bits (incluido el 0 inicial) | 047000000 |
PAG | signo de la tarde en mayúsculas | P.M |
pag | Signo de la tarde en minúsculas y mayúsculas | p.m |
z | Compensación digital RFC 822 desde GMT | -0800 |
z | huso horario | hora del Pacífico |
s | Número de segundos desde 1970-01-01 00:00:00 GMT | 1078884319 |
q | Desde 1970-01-01 00:00:00 GMT | 1078884319047 |
Hay otras clases útiles relacionadas con fechas y horas. Para obtener más detalles, puede consultar la documentación de estándares de Java.
La clase SimpleDateFormat tiene algunos métodos adicionales, en particular parse(), que intenta analizar una cadena de acuerdo con el almacenamiento formateado de un objeto SimpleDateFormat determinado. Por ejemplo:
importar java.util.*;
importar java.texto.*;
clase pública principal {
público estático vacío principal (String args []) {
SimpleDateFormat ft = nuevo SimpleDateFormat ("aaaa-MM-dd");
Entrada de cadena = args.length == 0? "1818-11-11": args[0];
System.out.print(entrada + " Analiza como ");
Fecha t;
intentar {
t = ft.parse(entrada);
System.out.println(t);
} captura (ParseException e) {
System.out.println("No analizable usando " + ft);
}
}
}
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
$javaDateDemo
1818-11-11 Análisis como miércoles 11 de noviembre a las 00:00:00 GMT 1818
$ java Fecha de demostración 2007-12-01
2007-12-01 Análisis como sábado 01 de diciembre 00:00:00 GMT 2007
Dormir Java(dormir)
Puedes poner un programa en suspensión durante un milisegundo o mientras dure tu computadora. Por ejemplo, el siguiente programa duerme durante 3 segundos:
importar java.util.*;
clase pública principal {
público estático vacío principal (String args []) {
intentar {
System.out.println(nueva fecha( ) + "n");
Hilo.dormir(5*60*10);
System.out.println(nueva fecha( ) + "n");
} captura (Excepción e) {
System.out.println("¡Obtuve una excepción!");
}
}
}
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
Domingo 03 de mayo 18:04:41 GMT 2009
Domingo 03 de mayo 18:04:44 GMT 2009
Un ejemplo a continuación muestra cómo medir un intervalo de tiempo en milisegundos:
importar java.util.*;
clase pública principal {
público estático vacío principal (String args []) {
intentar {
inicio largo = System.currentTimeMillis( );
System.out.println(nueva fecha( ) + "n");
Hilo.dormir(5*60*10);
System.out.println(nueva fecha( ) + "n");
extremo largo = System.currentTimeMillis( );
diferencia larga = final - inicio;
System.out.println("La diferencia es: " + diff);
} captura (Excepción e) {
System.out.println("¡Obtuve una excepción!");
}
}
}
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
Domingo 03 de mayo 18:16:51 GMT 2009
Domingo 03 de mayo 18:16:54 GMT 2009
La diferencia es: 3050
Ahora podemos formatear y crear un objeto de fecha, pero ¿cómo podemos configurar y obtener partes específicas de los datos de la fecha, como la hora, el día o los minutos? ¿Y cómo podemos sumar o restar valores de estas partes de la fecha? ¿Qué? La respuesta es utilizar la clase Calendario.
La clase Calendario es mucho más poderosa que la clase Fecha y su implementación también es más compleja que la clase Fecha.
La clase Calendario es una clase abstracta que implementa objetos de subclases específicas en uso real. El proceso de creación de objetos es transparente para los programadores y solo necesita crearse utilizando el método getInstance.
Calendar c = Calendar.getInstance();//El valor predeterminado es la fecha actual
Para usar la clase Calendario para representar una hora específica, primero debe crear un objeto Calendario y luego configurar los parámetros de año, mes y día en el objeto para completar.
//Crea un objeto Calendario que represente el Calendario del 12 de junio de 2009 c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);
Estas constantes se utilizan en la clase Calendario para representar diferentes significados. Muchas clases en jdk en realidad adoptan esta idea.
constante | describir |
---|---|
Calendario.AÑO | años |
Calendario.MES | mes |
Calendario.FECHA | fecha |
Calendario.DAY_OF_MONTH | La fecha tiene exactamente el mismo significado que el campo anterior. |
Calendario.HORA | hora en reloj de 12 horas |
Calendario.HOUR_OF_DAY | hora en reloj de 24 horas |
Calendario.MINUTO | minuto |
Calendario.SEGUNDO | Segundo |
Calendario.DAY_OF_WEEK | día de la semana |
Establecer ajustes
como:
Calendario c1 = Calendario.getInstance();
Llamar:
conjunto de anulación final pública (año int, mes int, fecha int)
c1.set(2009, 6 - 1, 12);//Establece el año, mes y día del objeto Calendario c1 como: 2009, 5, 12
Usar configuración de tipo de campo
Si solo establece el valor de un determinado campo, como la fecha, puede utilizar el siguiente método de configuración:
conjunto de vacío público (campo int, valor int)
Establezca la fecha representada por el objeto c1 en el día 10 y todos los demás valores se recalcularán
c1.set(Calendario.FECHA,10);
Establezca el año representado por el objeto c1 en 2008 y todos los demás valores se recalcularán
c1.set(Calendario.AÑO,2008);
El significado de otro conjunto de atributos de campo se puede deducir por analogía.
Agregar configuraciones
Calendario c1 = Calendario.getInstance();
Agregue 10 a la fecha del objeto c1, que es la fecha 10 días después de la fecha representada por c1. Todos los demás valores se volverán a calcular.
c1.add(Calendario.FECHA, 10);
Reste 10 de la fecha del objeto c1, que es la fecha 10 días antes de la fecha representada por c1. Todos los demás valores se volverán a calcular.
c1.add(Calendario.FECHA, -10);
El significado de agregar para otros atributos de campo se puede deducir por analogía.
Calendario c1 = Calendario.getInstance();
// Obtener el año int año = c1.get(Calendar.YEAR);
// Obtener el mes int mes = c1.get(Calendar.MONTH) + 1;
// Obtener la fecha int date = c1.get(Calendar.DATE);
// Obtener la hora int hora = c1.get(Calendar.HOUR_OF_DAY);
// Obtener el minuto int minuto = c1.get(Calendar.MINUTE);
// Obtener el segundo int second = c1.get(Calendar.SECOND);
// Obtiene el día de la semana (nota (esto es diferente de la clase Fecha): 1 representa el domingo, 2 representa la semana 1, 3 representa el martes, etc.)
int día = c1.get(Calendar.DAY_OF_WEEK);
La clase Calendario implementa el calendario gregoriano y GregorianCalendar es una implementación específica de la clase Calendario.
El método getInstance() de Calendar devuelve un objeto GregorianCalendar inicializado de forma predeterminada con la ubicación y 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úmero de serie | 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 año, int mes, int fecha) Construye un GregorianCalendar con la configuración de fecha dada en la zona horaria predeterminada con la configuración regional predeterminada |
3 | GregorianCalendar(int año, int mes, int fecha, int hora, int minuto) Construye un GregorianCalendar con la configuración de fecha y hora dada para la zona horaria predeterminada con la configuración regional predeterminada. |
4 | GregorianCalendar(int año, int mes, int fecha, int hora, int minuto, int segundo) Construye un GregorianCalendar con la configuración de fecha y hora dada 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(Zona horaria) Construye un GregorianCalendar basado en la hora actual en la zona horaria dada con la configuración regional predeterminada. |
7 | GregorianCalendar(Zona horaria, Locale aLocale) Construye un GregorianCalendar basado en la hora actual en la zona horaria dada con la localidad dada. |
Aquí hay una lista de algunos métodos útiles proporcionados por la clase GregorianCalendar:
número de serie | Métodos e instrucciones. |
1 | void add(campo int, cantidad int) Agrega la cantidad de tiempo especificada (firmada) al campo de calendario dado de acuerdo con las reglas del calendario. |
2 | protected void ComputeFields() convierte el valor de milisegundos UTC en un valor en el dominio del tiempo |
3 | protected void ComputeTime() anula el calendario y convierte el valor del dominio del tiempo a milisegundos UTC. |
4 | booleano es igual a (Objeto obj) Compara este calendario gregoriano con el objeto especificado. |
5 | int get(campo int) obtiene el valor de tiempo del campo especificado |
6 | int getActualMaximum(campo int) devuelve la fecha actual, el valor máximo del campo dado |
7 | int getActualMinimum(int campo) devuelve la fecha actual, el valor mínimo del campo dado |
8 | int getGreatestMinimum(int field) Devuelve el valor mínimo más alto para el campo de calendario dado en esta instancia de GregorianCalendar. |
9 | Date getGregorianChange() Obtiene la fecha de cambio del calendario gregoriano. |
10 | int getLeastMaximum(int campo) Devuelve el valor máximo más bajo del campo de calendario dado para esta instancia de GregorianCalendar |
11 | int getMaximum(int campo) 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 por un entero largo |
14 | TimeZone getTimeZone() obtiene la zona horaria. |
15 | int getMinimum(int field) devuelve el valor mínimo del campo dado. |
16 | int hashCode() anula hashCode. |
17 | boolean isLeapYear(int año) determina si el año dado es bisiesto. |
18 | void roll(int field, boolean up) Suma o resta (arriba/abajo) una sola unidad de tiempo del campo de tiempo dado, sin cambiar campos más grandes. |
19 | void set(int field, int value) establece el campo de tiempo con el valor dado. |
20 | void set(int año, int mes, int fecha) establece el valor de año, mes y día. |
veintiuno | void set(int año, int mes, int fecha, int hora, int minuto) establece el valor de año, mes, día, hora y minuto. |
Veintidós | void set(int año, int mes, int fecha, int hora, int minuto, int segundo) establece el valor de año, mes, día, hora, minuto y segundo. |
veintitrés | void setGregorianChange(Fecha fecha) establece la fecha de cambio de GregorianCalendar. |
veinticuatro | void setTime(Fecha) establece la hora actual del Calendario con la fecha indicada. |
25 | void setTimeInMillis(long millis) establece la hora actual del Calendario con los milisegundos largos dados. |
26 | void setTimeZone(valor de zona horaria) Establece la zona horaria actual con el valor de zona horaria dado. |
27 | String toString() devuelve una cadena que representa el calendario. |
importar java.util.*;
clase pública GregorianCalendarDemo {
público estático vacío principal (String args []) {
Meses de cadena [] = {
"Enero", "febrero", "marzo", "abril",
"mayo", "junio", "julio", "agosto",
"septiembre", "octubre", "noviembre", "diciembre"};
año entero;
// Inicializar el calendario gregoriano // Usar la fecha y hora actuales // Valores predeterminados a la hora y zona horaria local GregorianCalendar gcalendar = new GregorianCalendar();
// Mostrar información de fecha y hora actual System.out.print("Fecha: ");
System.out.print(meses[gcalendar.get(Calendar.MONTH)]);
System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
System.out.println(año = gcalendar.get(Calendario.AÑO));
System.out.print("Hora: ");
System.out.print(gcalendar.get(Calendario.HORA) + ":");
System.out.print(gcalendar.get(Calendario.MINUTO) + ":");
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");
}
demás {
System.out.println("El año actual no es bisiesto");
}
}
}
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
Fecha: 22 de abril de 2009
Hora: 11:25:27
El año actual no es bisiesto.
Para obtener una lista completa de las clases de Calender, puede consultar la documentación estándar de Java.