當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。