java.time.format.DateTimeFormatterBuilder Clase en Java

La clase DateTimeFormatterBuilder es una clase constructora que se usa para crear formateadores de fecha y hora. DateTimeFormatter se utiliza como formateador para imprimir y analizar objetos de fecha y hora. DateTimeFormatterBuilder permite crear un DateTimeFormatter. Se utiliza para construir formateadores que luego se utilizan para imprimir o analizar. Los formateadores se construyen añadiendo campos específicos u otros formateadores a una instancia de este constructor. Si queremos crear nuestro propio objeto DateTimeFormatter, java.time.format.DateTimeFormatterBuilder ayudará. Todos los formateadores de fecha y hora se crean en última instancia con este constructor.

La vista del paquete es la siguiente: 

--> java.time Package
    --> java.time.format SubPackage
        --> DateTimeFormatterBuilder Class  

Sintaxis:

public final class DateTimeFormatterBuilder
extends Object

Analicemos primero los constructores de esta clase antes de sumergirnos en los métodos de esta clase. 

Constructores de la clase DateTimeFormatterBuilder

Constructor Descripción
DateTimeFormatterBuilder() Construye una nueva instancia del constructor.

Métodos de la clase DateTimeFormatterBuilder

Se representan pictóricamente a continuación en formato tabular en orden alfabético junto con la acción realizada por ellos, que es la siguiente:

Métodos Acción realizada 
append(DateTimeFormatter formateador) Añade todos los elementos de un formateador al constructor.
appendChronologyId() Agrega el ID de cronología, como ‘ISO’ o ‘ThaiBuddhist’, al formateador.
appendChronologyText(TextStyle textStyle) Agrega el nombre de la cronología al formateador.
appendFraction(campo TemporalField, int minWidth, int maxWidth, punto decimal booleano) Agrega el valor fraccionario de un campo de fecha y hora al formateador.
appendInstant() Agrega un instante usando ISO-8601 al formateador, formateando dígitos fraccionarios en grupos de tres.
appendInstant(int fraccionarioDigits) Agrega un instante usando ISO-8601 al formateador con control sobre el número de dígitos fraccionarios.
appendLiteral(char literal) Agrega un carácter literal al formateador.
appendLiteral(Literal de string) Agrega un literal de string al formateador.
appendLocalized(FormatStyle dateStyle, FormatStyle timeStyle) Agrega un patrón de fecha y hora localizado al formateador.
appendLocalizedOffset (estilo TextStyle) Agrega el desplazamiento de la zona localizada, como ‘GMT+01:00’, al formateador.
appendOffset(String pattern, String noOffsetText) Agrega el desplazamiento de zona, como ‘+01:00’, al formateador.
appendOffsetId() Agrega el desplazamiento de zona, como ‘+01:00’, al formateador.
appendOptional(DateTimeFormatter formateador) Agrega un formateador al constructor que formateará/analizará opcionalmente.
appendPattern (patrón de string) Agrega los elementos definidos por el patrón especificado al constructor.
appendText (campo de campo temporal) Agrega el texto de un campo de fecha y hora al formateador usando el estilo de texto completo.
appendText(campo TemporalField, Map<Long,String> textLookup) Agrega el texto de un campo de fecha y hora al formateador utilizando el mapa especificado para proporcionar el texto.
appendText(campo de campo temporal, estilo de texto estilo de texto) Agrega el texto de un campo de fecha y hora al formateador.
appendValue (campo de campo temporal) Agrega el valor de un campo de fecha y hora al formateador usando un estilo de salida normal.
appendValue (campo TemporalField, ancho int) Agrega el valor de un campo de fecha y hora al formateador mediante un enfoque de ancho fijo y relleno con ceros.
appendValue (campo TemporalField, int minWidth, int maxWidth, SignStyle signStyle) Agrega el valor de un campo de fecha y hora al formateador, lo que brinda un control total sobre el formato.
appendValueReduced (campo de campo temporal, ancho int, ancho máximo int, ChronoLocalDate baseDate) Agrega el valor reducido de un campo de fecha y hora al formateador.
appendValueReduced (campo de campo temporal, ancho int, ancho máximo int, valor base int) Agrega el valor reducido de un campo de fecha y hora al formateador.
appendZoneId() Agrega la identificación de la zona horaria, como ‘Europa/París’ o ‘+02:00’, al formateador.
appendZoneOrOffsetId() Agrega el Id. de zona horaria, como ‘Europa/París’ o ‘+02:00’, al formateador, utilizando el mejor Id. de zona disponible.
appendZoneRegionId() Agrega el Id. de región de zona horaria, como «Europa/París», al formateador, rechazando el Id. de zona si es un ZoneOffset
appendZoneText(TextStyle textStyle) Agrega el nombre de la zona horaria, como «Hora de verano británica», al formateador.
appendZoneText(TextStyle textStyle, Set<ZoneId> zonaspreferidas) Agrega el nombre de la zona horaria, como «Hora de verano británica», al formateador.
getLocalizedDateTimePattern() Obtiene el patrón de formato de los estilos de fecha y hora para una configuración regional y una cronología.
opcionalEnd() Finaliza una sección opcional.
opcionalStart() Marca el inicio de una sección opcional.
padNext(int padWidth) Hace que la siguiente impresora/analizador agregada se rellene a un ancho fijo usando un espacio.
padNext(int padWidth, char padChar) Hace que la siguiente impresora/analizador agregada se rellene a un ancho fijo.
parseCaseInsensible() Cambia el estilo de análisis para que no distinga entre mayúsculas y minúsculas para el resto del formateador.
analizar mayúsculas y minúsculas() Cambia el estilo de análisis para distinguir entre mayúsculas y minúsculas para el resto del formateador.
parseDefaulting() Agrega un valor predeterminado para un campo al formateador para usarlo en el análisis.
analizarLenient() Cambia el estilo de análisis para que sea indulgente con el resto del formateador.
parseStrict() Cambia el estilo de análisis para que sea estricto para el resto del formateador.
 al formateador() Completa este constructor creando DateTimeFormatter utilizando la configuración regional predeterminada.
toFormatter(Configuración regional local) Completa este constructor creando DateTimeFormatter utilizando la configuración regional especificada.

Ahora implementemos invocando algunos de los métodos de esta clase con la ayuda de programas java limpios para obtener una mejor comprensión de la clase mediante la implementación de sus métodos. 

Implementación:

En la clase LocalDateTime, hay tres tipos de método now() según los parámetros que se le pasan. now() de una clase LocalDateTime utilizada para obtener la fecha y hora actual del reloj del sistema en la zona horaria predeterminada. Este método devolverá LocalDateTime en función del reloj del sistema con la zona horaria predeterminada para obtener la fecha y hora actual.

Ejemplo 1:

Java

// Java Program to Illustrate DateTimeFormatterBuilder class
// by invoking appendValue() Method of this class
 
// Importing required classes from respective packages
import java.io.*;
import java.lang.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.TextStyle;
import java.time.temporal.ChronoField;
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an object of this class
        // inside main() method
        DateTimeFormatterBuilder builder
            = new DateTimeFormatterBuilder();
 
        // Now creating object of DateTimeFormatter class
        // over which appendValue() method is invoked
        DateTimeFormatter formatter
            = builder.appendLiteral("Day is:")
                  .appendValue(ChronoField.DAY_OF_MONTH)
                  .appendLiteral(", Month is:")
                  .appendValue(ChronoField.MONTH_OF_YEAR)
                  .toFormatter();
 
        // Creating object of LocalDateTime class
        // invoking now() method over it
        LocalDateTime dateTime = LocalDateTime.now();
 
        // Formatting the date and lately
        // storing it in a string
        String str = dateTime.format(formatter);
 
        // Print and display the day and month
        System.out.println(str);
    }
}
Producción

Day is:2, Month is:2

Ejemplo 2: método OptionalStart() y OptionalEnd()

Java

// Java program to illustrate DateTimeFormatterBuilder
// Using optionalStart() and optionalEnd() Methods
 
// Importing required libraries
import java.io.*;
import java.lang.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.ChronoField;
 
// Main class
public class GFG {
 
    // Main driver methods
    public static void main(String[] args)
    {
 
        // Creating an object of DateTimeFormatter class
        DateTimeFormatter parser
            = new DateTimeFormatterBuilder()
                  .appendPattern("[yyyy][yyyyMM][yyyyMMdd]")
                  .optionalStart()
                  .parseDefaulting(
                      ChronoField.MONTH_OF_YEAR, 1)
                  .parseDefaulting(ChronoField.DAY_OF_MONTH,
                                   1)
                  .optionalEnd()
                  .toFormatter();
 
        // Print and display statements
 
        // Execute if only year is given in parameter
        System.out.println(
            parser.parse("2021", LocalDate::from));
 
        // Execute if year and month is given
        System.out.println(
            parser.parse("202106", LocalDate::from));
 
        // Execute if year, month and date is given
        System.out.println(
            parser.parse("20210631", LocalDate::from));
    }
}
Producción

2021-01-01
2021-06-01
2021-06-30

Ejemplo 3:

Java

// Java Program to illustrate DateTimeFormatterBuilder Class
 
// Importing required classes
import java.io.*;
import java.lang.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.TextStyle;
import java.time.temporal.ChronoField;
import java.util.Locale;
 
// Main class
// DateTimeFormatterBuilderExample
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Creating object of LocalDate class
        // insisde main() method
        LocalDate date = LocalDate.of(2021, 6, 30);
 
        // Creating object of DateTimeFormatter class
 
        // Object 1
        DateTimeFormatter formatter
            = DateTimeFormatter.ofPattern("dd/MM/yyyy");
 
        // Object 2
        DateTimeFormatter italianFormatter
            = DateTimeFormatter.ofPattern("d. MMMM yyyy",
                                          Locale.ITALIAN);
 
        // Print and display date in format XX-XX-XX
        System.out.println(
            date.format(DateTimeFormatter.ISO_LOCAL_DATE));
 
        // Print and display date in format XX/XX/XX
        System.out.println(date.format(formatter));
 
        // Print and display Italian date formatter
        System.out.println(date.format(italianFormatter));
 
        // Object 3
        DateTimeFormatter complexFormatter
            = new DateTimeFormatterBuilder()
                  .appendText(ChronoField.DAY_OF_MONTH)
                  .appendLiteral(". ")
                  .appendText(ChronoField.MONTH_OF_YEAR)
                  .appendLiteral(" ")
                  .appendText(ChronoField.YEAR)
                  .parseCaseInsensitive()
                  .toFormatter(Locale.US);
 
        // Print and display US date formatter
        System.out.println(date.format(complexFormatter));
    }
}
Producción

2021-06-30
30/06/2021
30. giugno 2021
30. June 2021

Publicación traducida automáticamente

Artículo escrito por shantanujain18 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *