1. Clase DateTimeFormatter
La clase especial DateTimeFormatterencuentra 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 DateTimeFormatterclase y pasar un patrón que especifique cómo mostrará la fecha y la hora:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Donde dtfes una DateTimeFormattervariable. 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 DateTimeFormatterobjeto basado en el patrón. Y en la siguiente línea, usamos el format()método para convertir un LocalDateTimeobjeto 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 DateTimeFormatterobjeto. 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 DateTimeFormatterclase 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 DateTimeFormatterobjeto 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 DateTimeFormatterobjeto, 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