1. Clase DateTimeFormatter
La clase especial DateTimeFormatter
encuentra su camino en la API de fecha y hora. Su propósito es facilitar al máximo a los programadores la conversión de una fecha y hora al formato exacto que deseen. Y nos complace informar que los creadores de Java lo lograron.
Usarlo es muy fácil. Primero, debe crear una DateTimeFormatter
clase y pasar un patrón que especifique cómo mostrará la fecha y la hora:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Donde dtf
es una DateTimeFormatter
variable. es un método estático de la clase. Y el patrón es una cadena que especifica el patrón que se usará para mostrar la fecha y la hora.DateTimeFormatter.ofPattern()
DateTimeFormatter
Ejemplos
Código | Salida de consola |
---|---|
|
|
En el ejemplo anterior, usamos el ofPattern()
método para crear un DateTimeFormatter
objeto basado en el patrón. Y en la siguiente línea, usamos el format()
método para convertir un LocalDateTime
objeto en una cadena. Ves el resultado en la pantalla.
Puede pasar casi cualquier objeto de la API de fecha y hora al format()
método.
El estático ofPattern()
también es muy simple: toma un patrón como argumento y devuelve un DateTimeFormatter
objeto. La parte más interesante se encuentra en el patrón.
2. Patrón de formato
La cadena pasada como patrón se usa como patrón cuando se muestra información. MM se reemplaza por el número del mes, dd por el día del mes e yy por el número del año. El caso de las cartas importa.
La tabla completa para estos patrones de tiempo es esta:
Carta | Significado |
---|---|
y | Año |
METRO | Mes |
d | Día |
H | Horas |
metro | Minutos |
s | Segundos |
S | Milésimas de segundo |
norte | Nanosegundos. |
No es particularmente difícil de recordar.
Pero, ¿por qué el patrón del ejemplo incluye letras repetidas MM, dd e yy? Bueno, aquí es donde se pone más interesante.
Idea general
El número de letras afecta la longitud del texto. Cuantas más letras haya, más largo será el texto.
Si la letra H se especifica una vez, las 9 horas se mostrarán como 9, pero si la letra H se especifica dos veces seguidas, las 9 horas se mostrarán como 09.
Si la letra y se especifica 2 veces seguidas, entonces el año se escribe con 2 dígitos. Si ocurre 4 veces seguidas, entonces se usan 4 dígitos.
Si la letra M se especifica 2 veces seguidas, se escribe el número del mes. Si 3 veces seguidas, entonces se usa el nombre del mes (sus primeras 3 letras). Si 4 veces seguidas, se usa el nombre completo del mes.
Ejemplo:
Código | Salida de consola |
---|---|
|
|
3. Tabla completa de patrones
La tabla completa es bastante grande y súper interesante:
Patrón | variaciones del patrón | Ejemplo | Descripción |
---|---|---|---|
y | yy, yyyy | 19; 2019 | Año |
L/M | M, MM, MMM, MMMM, MMMMM | 1; 01; Ene; Enero; j | Mes |
d | d, dd | 9; 09 | Día |
H | H, HH | 2; 02 | Horas |
metro | mmm | 3; 03 | Minutos |
s | s, ss | 5; 05 | Segundos |
S | S, SS, SSS, ... | 1; 12; 123 | Milésimas de segundo |
norte | norte | 123456789 | nanosegundos |
GRAMO | G, GGGG, GGGGG | ANUNCIO; De nueva era; A; | Era |
P/q | q, qq, qqq, qqqq | 3; 03; Q3; 3er trimestre | Cuarto |
w | w | 13 | semana del año |
W | W | 3 | semana del mes |
mi | EEE, EEEE, EEEEE | Lun; Lunes; METRO | Día de la semana |
CE | e, ee, eee, eeee, eeeee | 1; 01; Lun; Lunes; METRO | Día de la semana |
a | a | PM | Am o PM |
h | h | 12 | reloj de 12 horas. |
V | vv | Europa/Helsinki | Zona horaria |
z | z zzzz | EET; Hora estándar de Europa del Este | Zona horaria |
O | OOOOO | GMT+2; GMT+02:00 | Zona horaria |
Por cierto, esta no es en realidad una versión completa. Puedes encontrar la versión más completa aquí .
4. Tiempo de análisis
La DateTimeFormatter
clase también es interesante por su capacidad no solo para convertir una fecha y hora en una cadena de acuerdo con un patrón determinado, sino también para realizar la operación inversa.
Analizar una cadena es el proceso de dividirla en tokens significativos.
Esto es lo que parece:
Código | Salida de consola |
---|---|
|
|
Primero, creamos un DateTimeFormatter
objeto y establecemos el patrón que se usa para analizar.
Luego llamamos al método LocalDate.parse()
o LocalTime.parse()
o LocalDateTime.parse()
y pasamos la cadena para analizarla junto con el DateTimeFormatter
objeto, que comprende cómo analizar el texto pasado y qué patrón debe usarse para hacerlo.
Otro ejemplo: esta vez analizaremos el tiempo.
Código | Salida de consola |
---|---|
|
|
GO TO FULL VERSION