当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java java.time.format.DateTimeFormatterBuilder用法及代码示例


DateTimeFormatterBuilder 类是一个构建器类,用于创建日期时间格式化程序。 DateTimeFormatter 用作打印和解析日期时间对象的格式化程序。 DateTimeFormatterBuilder 允许创建DateTimeFormatter。它用于构造格式化程序,然后用于打印或解析。格式化程序是通过将特定字段或其他格式化程序附加到此构建器的实例来构建的。如果我们想创建自己的DateTimeFormatter对象,那么java.time.format.DateTimeFormatterBuilder将会有所帮助。所有日期时间格式化程序最终都是使用此构建器创建的。

包视图如下:

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

用法:

public final class DateTimeFormatterBuilder
extends Object

在深入探讨该类的方法之前,让我们先讨论该类的构造函数

Constructors of DateTimeFormatterBuilder Class

构造函数 说明
DateTimeFormatterBuilder() 构造构建器的新实例。

Methods of DateTimeFormatterBuilder Class

下面以表格形式按字母顺序图示了它们以及它们执行的操作,如下所示:

方法 执行的操作
append(DateTimeFormatter formatter) 将格式化程序的所有元素附加到构建器。
appendChronologyId() 将年代 ID(例如“ISO”或“ThaiBuddhist”)附加到格式化程序。
appendChronologyText(TextStyle textStyle) 将时间顺序名称附加到格式化程序。
appendFraction(TemporalField field, int minWidth, int maxWidth, boolean decimalPoint) 将日期时间字段的小数值附加到格式化程序。
appendInstant() 使用 ISO-8601 将瞬间附加到格式化程序,以三个为一组格式化小数位。
appendInstant(int fractionalDigits) 使用 ISO-8601 将瞬间附加到格式化程序,并控制小数位数。
appendLiteral(char literal) 将字符文字附加到格式化程序。
appendLiteral(String literal) 将字符串文字附加到格式化程序。
appendLocalized(FormatStyle dateStyle, FormatStyle timeStyle) 将本地化的日期时间模式附加到格式化程序。
appendLocalizedOffset(TextStyle style) 将本地化区域偏移量(例如“GMT+01:00”)附加到格式化程序。
appendOffset(String pattern, String noOffsetText) 将区域偏移量(例如“+01:00”)附加到格式化程序。
appendOffsetId() 将区域偏移量(例如“+01:00”)附加到格式化程序。
appendOptional(DateTimeFormatter formatter) 将格式化程序附加到构建器,该构建器可以选择格式化/解析。
appendPattern(String pattern) 将指定模式定义的元素附加到构建器。
appendText(TemporalField field) 使用 full-text 样式将日期时间字段的文本附加到格式化程序。
appendText(TemporalField 字段, Map<Long,String> textLookup) 使用指定的映射来提供文本,将日期时间字段的文本附加到格式化程序。
appendText(TemporalField field, TextStyle textStyle) 将日期时间字段的文本附加到格式化程序。
appendValue(TemporalField field) 使用正常输出样式将日期时间字段的值附加到格式化程序。
appendValue(TemporalField field, int width) 使用固定宽度、零填充的方法将日期时间字段的值附加到格式化程序。
appendValue(TemporalField field, int minWidth, int maxWidth, SignStyle signStyle) 将日期时间字段的值附加到格式化程序,以提供对格式设置的完全控制。
appendValueReduced(TemporalField field, int width, int maxWidth, ChronoLocalDate baseDate) 将日期时间字段的减少值附加到格式化程序。
appendValueReduced(TemporalField field, int width, int maxWidth, int baseValue) 将日期时间字段的减少值附加到格式化程序。
appendZoneId() 将时区 ID(例如“欧洲/巴黎”或“+02:00”)附加到格式化程序。
appendZoneOrOffsetId() 使用最佳可用区域 ID 将时区 ID(例如“欧洲/巴黎”或“+02:00”)附加到格式化程序。
appendZoneRegionId() 将时区区域 ID(例如“欧洲/巴黎”)附加到格式化程序,如果该区域 ID 是 ZoneOffset,则拒绝该区域 ID
appendZoneText(TextStyle textStyle) 将时区名称(例如“英国夏令时间”)附加到格式化程序。
appendZoneText(TextStyle textStyle, Set<ZoneId> PreferredZones) 将时区名称(例如“英国夏令时间”)附加到格式化程序。
getLocalizedDateTimePattern() 获取区域设置和年表的日期和时间样式的格式模式。
optionalEnd() 结束可选部分。
optionalStart() 标记可选部分的开始。
padNext(int padWidth) 导致下一个添加的打印机/解析器使用空格填充到固定宽度。
padNext(int padWidth, char padChar) 导致下一个添加的打印机/解析器填充到固定宽度。
parseCaseInsensitive() 将格式化程序其余部分的解析样式更改为不区分大小写。
parseCaseSensitive() 将格式化程序其余部分的解析样式更改为区分大小写。
parseDefaulting() 将字段的默认值附加到格式化程序以供解析时使用。
parseLenient() 将解析样式更改为对格式化程序的其余部分宽松。
parseStrict() 将解析样式更改为对格式化程序的其余部分严格。
toFormatter() 通过使用默认区域设置创建 DateTimeFormatter 来完成此构建器。
toFormatter(Locale locale) 通过使用指定的区域设置创建 DateTimeFormatter 来完成此构建器。

现在让我们借助干净的java程序调用该类的一些方法来实现,以便通过实现其方法来更好地理解该类。

执行:

In LocalDateTime class, there are three types of now() method depending upon the parameters passed to it. now() method of a LocalDateTime class used to obtain the current date-time from the system clock in the default time-zone. This method will return LocalDateTime based on the system clock with the default time-zone to obtain the current date-time.

示例 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);
    }
}
输出
Day is:2, Month is:2

示例 2:optionalStart()和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));
    }
}
输出
2021-01-01
2021-06-01
2021-06-30

示例 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
        // inside 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));
    }
}
输出
2021-06-30
30/06/2021
30. giugno 2021
30. June 2021


相关用法


注:本文由纯净天空筛选整理自shantanujain18大神的英文原创作品 java.time.format.DateTimeFormatterBuilder Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。