Java proporciona la Fecha clase disponible en java.util paquete, esta clase encapsula la fecha y hora actuales.
La clase Date admite dos constructores como se muestra en la siguiente tabla.
No Señor. | Constructor y descripción |
---|---|
1 |
Fecha( ) Este constructor inicializa el objeto con la fecha y hora actuales. |
2 |
Fecha (milisegundos largos) Este constructor acepta un argumento que equivale al número de milisegundos que han transcurrido desde la medianoche del 1 de enero de 1970. |
A continuación se muestran los métodos de la clase de fecha.
No Señor. | Método y descripción |
---|---|
1 |
booleano después de (fecha fecha) Devuelve verdadero si el objeto de fecha que invoca contiene una fecha posterior a la especificada por fecha; de lo contrario, devuelve falso. |
2 |
booleano antes de (fecha fecha) Devuelve verdadero si el objeto de fecha que invoca contiene una fecha anterior a la especificada por fecha; de lo contrario, devuelve falso. |
3 |
Clonar objeto () Duplica el objeto Date que invoca. |
4 |
int compareTo (fecha fecha) Compara el valor del objeto que invoca con el de la fecha. Devuelve 0 si los valores son iguales. Devuelve un valor negativo si el objeto que lo invoca es anterior a la fecha. Devuelve un valor positivo si el objeto que lo invoca es posterior a la fecha. |
5 |
int compareTo (Objeto obj) Funciona de forma idéntica a compareTo (Date) si obj es de la clase Date. De lo contrario, arroja una ClassCastException. |
6 |
booleano es igual a (fecha del objeto) Devuelve verdadero si el objeto de fecha que invoca contiene la misma hora y fecha que el especificado por fecha; de lo contrario, devuelve falso. |
7 |
long getTime () Devuelve el número de milisegundos transcurridos desde el 1 de enero de 1970. |
8 |
int hashCode () Devuelve un código hash para el objeto que lo invoca. |
9 |
void setTime (tiempo largo) Establece la fecha y la hora especificadas por la hora, que representa un tiempo transcurrido en milisegundos desde la medianoche del 1 de enero de 1970. |
10 |
Cadena toString () Convierte el objeto Date que invoca en una cadena y devuelve el resultado. |
Obtener la fecha y la hora actuales
Este es un método muy sencillo para obtener la fecha y hora actual en Java. Puede utilizar un objeto Date simple con Encadenar() método para imprimir la fecha y hora actuales de la siguiente manera:
Ejemplo
import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date using toString() System.out.println(date.toString()); } }
Esto producirá el siguiente resultado:
Producción
on May 04 09:51:52 CDT 2009
Comparación de fechas
A continuación se muestran las tres formas de comparar dos fechas:
-
Puede usar getTime () para obtener el número de milisegundos que han transcurrido desde la medianoche del 1 de enero de 1970 para ambos objetos y luego comparar estos dos valores.
-
Puede utilizar los métodos before (), after () y equals (). Debido a que el día 12 del mes es anterior al 18, por ejemplo, new Date (99, 2, 12) .before (new Date (99, 2, 18)) devuelve verdadero.
-
Puede utilizar el método compareTo (), que está definido por la interfaz Comparable e implementado por Date.
Formato de fecha usando SimpleDateFormat
SimpleDateFormat es una clase concreta para formatear y analizar fechas de manera sensible a la configuración regional. SimpleDateFormat le permite comenzar eligiendo cualquier patrón definido por el usuario para el formato de fecha y hora.
Ejemplo
import java.util.*; import java.text.*; public class DateDemo { public static void main(String args[]) { Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz"); System.out.println("Current Date: " + ft.format(dNow)); } }
Esto producirá el siguiente resultado:
Producción
Current Date: Sun 2004.07.18 at 04:14:09 PM PDT
Códigos de formato de formato de fecha simple
Para especificar el formato de hora, use una cadena de patrón de tiempo. En este patrón, todas las letras ASCII se reservan como letras de patrón, que se definen de la siguiente manera:
Personaje | Descripción | Ejemplo |
---|---|---|
GRAMO | Designador de era | ANUNCIO |
y | Año en cuatro dígitos | 2001 |
METRO | Mes del año | Julio o 07 |
D | Día en mes | 10 |
h | Hora en AM / PM (1 ~ 12) | 12 |
H | Hora del día (0 ~ 23) | 22 |
metro | Minuto en hora | 30 |
s | Segundo en minuto | 55 |
S | Milisegundo | 234 |
mi | Día de la semana | martes |
D | Día en el año | 360 |
F | Día de la semana en el mes | 2 (segundo miércoles de julio) |
w | Semana en el año | 40 |
W | Semana en mes | 1 |
a | Marcador AM / PM | PM |
k | Hora del día (1 ~ 24) | 24 |
K | Hora en AM / PM (0 ~ 11) | 10 |
z | Zona horaria | hora estándar del Este |
‘ | Escape por texto | Delimitador |
« | Una frase | ‘ |
Formateo de fecha con printf
El formateo de fecha y hora se puede hacer muy fácilmente usando printf método. Utiliza un formato de dos letras, comenzando con t y terminando en una de las letras de la tabla como se muestra en el siguiente código.
Ejemplo
import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date String str = String.format("Current Date/Time : %tc", date ); System.out.printf(str); } }
Esto producirá el siguiente resultado:
Producción
Current Date/Time : Sat Dec 15 16:37:57 MST 2012
Sería un poco tonto si tuviera que proporcionar la fecha varias veces para formatear cada parte. Por esa razón, una cadena de formato puede indicar el índice del argumento a formatear.
El índice debe seguir inmediatamente al% y debe terminar con un $.
Ejemplo
import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date); } }
Esto producirá el siguiente resultado:
Producción
Due date: February 09, 2004
Alternativamente, puede usar la bandera <. indica que se debe utilizar de nuevo el mismo argumento en la especificaci formato anterior.>
Ejemplo
import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display formatted date System.out.printf("%s %tB %<te, %<tY", "Due date:", date); } }
Esto producirá el siguiente resultado:
Producción
Due date: February 09, 2004
Caracteres de conversión de fecha y hora
Personaje | Descripción | Ejemplo |
---|---|---|
C | Fecha y hora completas | Lunes 04 de mayo 09:51:52 CDT 2009 |
F | Fecha ISO 8601 | 2004-02-09 |
D | Fecha con formato de EE. UU. (Mes / día / año) | 02/09/2004 |
T | Tiempo de 24 horas | 18:05:19 |
r | Tiempo de 12 horas | 06:05:19 pm |
R | Tiempo de 24 horas, sin segundos | 18:05 |
Y | Año de cuatro dígitos (con ceros a la izquierda) | 2004 |
y | Últimos dos dígitos del año (con ceros a la izquierda) | 04 |
C | Primeros dos dígitos del año (con ceros a la izquierda) | 20 |
B | Nombre del mes completo | febrero |
B | Nombre del mes abreviado | feb |
metro | Mes de dos dígitos (con ceros a la izquierda) | 02 |
D | Día de dos dígitos (con ceros a la izquierda) | 03 |
mi | Día de dos dígitos (sin ceros a la izquierda) | 9 |
A | Nombre completo del día de la semana | lunes |
a | Nombre abreviado del día de la semana | Lun |
j | Día del año de tres dígitos (con ceros a la izquierda) | 069 |
H | Hora de dos dígitos (con ceros a la izquierda), entre 00 y 23 | 18 |
k | Hora de dos dígitos (sin ceros a la izquierda), entre 0 y 23 | 18 |
I | Hora de dos dígitos (con ceros a la izquierda), entre 01 y 12 | 06 |
l | Hora de dos dígitos (sin ceros a la izquierda), entre 1 y 12 | 6 |
METRO | Minutos de dos dígitos (con ceros a la izquierda) | 05 |
S | Segundos de dos dígitos (con ceros a la izquierda) | 19 |
L | Milisegundos de tres dígitos (con ceros a la izquierda) | 047 |
norte | Nanosegundos de nueve dígitos (con ceros a la izquierda) | 047000000 |
PAG | Marcador de mañana o tarde en mayúsculas | PM |
pag | Marcador de mañana o tarde en minúsculas | pm |
z | Desplazamiento numérico RFC 822 de GMT | -0800 |
Z | Zona horaria | PST |
s | Segundos desde 1970-01-01 00:00:00 GMT | 1078884319 |
Q | Milisegundos desde 1970-01-01 00:00:00 GMT | 1078884319047 |
Hay otras clases útiles relacionadas con la fecha y la hora. Para obtener más detalles, puede consultar la documentación estándar de Java.
Analizar cadenas en fechas
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.
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 } catch (ParseException e) { System.out.println("Unparseable using " + ft); } } }
Una ejecución de muestra del programa anterior produciría el siguiente resultado:
Producción
1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818
Durmiendo un rato
Puede dormir durante cualquier período de tiempo, desde un milisegundo hasta la vida útil de su 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(5*60*10); System.out.println(new Date( ) + "n"); } catch (Exception e) { System.out.println("Got an exception!"); } } }
Esto producirá el siguiente resultado:
Producción
Sun May 03 18:04:41 GMT 2009 Sun May 03 18:04:51 GMT 2009
Medir el tiempo transcurrido
A veces, es posible que deba medir un punto en el tiempo en milisegundos. Así que reescribamos el ejemplo anterior una vez más:
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!"); } } }
Esto producirá el siguiente resultado:
Producción
Sun May 03 18:16:51 GMT 2009 Sun May 03 18:16:57 GMT 2009 Difference is : 5993
GregorianCalendar (clase)
GregorianCalendar es una implementación concreta de una clase Calendar que implementa el calendario gregoriano normal con el que está familiarizado. No discutimos la clase Calendar en este tutorial, puede buscar documentación estándar de Java para esto.
los obtener Instancia( ) El método de Calendar devuelve un GregorianCalendar inicializado con la fecha y hora actuales en la zona horaria y la configuración regional predeterminadas. GregorianCalendar define dos campos: AD y BC. Estos representan las dos eras definidas por el calendario gregoriano.
También hay varios constructores para los objetos GregorianCalendar:
No Señor. | Constructor y descripción |
---|---|
1 |
Calendario Gregoriano() Construye un GregorianCalendar predeterminado utilizando 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 fecha dada establecida 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 fecha y hora determinadas establecidas 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 fecha y hora determinadas establecidas 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 el dado … |