📜  Java中的Java .time.format.DateTimeFormatterBuilder 类(1)

📅  最后修改于: 2023-12-03 15:16:29.575000             🧑  作者: Mango

Java中的Java.time.format.DateTimeFormatterBuilder 类

DateTimeFormatterBuilder 类是Java 8中java.time.format包中的一个类,用于创建和定制DateTimeFormatter日期时间格式化对象。DateTimeFormatter类是线程安全的,可重用的对象,用于格式化日期时间字符串为日期、时间和日期时间对象。

创建DateTimeFormatter

要创建一个DateTimeFormatter对象,我们需要使用DateTimeFormatterBuilder类。以下示例演示了使用DateTimeFormatterBuilder类来创建一个自定义日期时间格式的DateTimeFormatter对象。

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
    .appendLiteral("The date is ")
    .appendValue(MONTH_OF_YEAR, 2)
    .appendLiteral('/')
    .appendValue(DAY_OF_MONTH, 2)
    .appendLiteral('/')
    .appendValue(YEAR, 4)
    .appendLiteral(", and the time is ")
    .appendValue(HOUR_OF_DAY, 2)
    .appendLiteral(':')
    .appendValue(MINUTE_OF_HOUR, 2)
    .appendLiteral(':')
    .appendValue(SECOND_OF_MINUTE, 2)
    .toFormatter();

以上代码将创建一个自定义日期时间格式的DateTimeFormatter对象,格式为The date is MM/DD/YYYY, and the time is HH:mm:ss

定制DateTimeFormatter

DateTimeFormatterBuilder类提供了一系列方法,允许我们定制DateTimeFormatter对象的各个方面,例如:

  • appendPattern(String pattern):使用ISO-8601日期时间格式的字符串模式添加格式。

  • appendValue(TemporalField field, int width):添加指定的TemporalField(例如年、月、日、时、分等)的值,并指定其宽度。

  • appendLiteral(char literal):添加指定的字面量字符。

以下示例演示了如何使用DateTimeFormatterBuilder对象定制一个日期时间格式的DateTimeFormatter对象。

// 字符串模式:yyyy-MM-dd HH:mm:ss
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
    .appendValue(YEAR, 4)
    .appendLiteral('-')
    .appendValue(MONTH_OF_YEAR, 2)
    .appendLiteral('-')
    .appendValue(DAY_OF_MONTH, 2)
    .appendLiteral(' ')
    .appendValue(HOUR_OF_DAY, 2)
    .appendLiteral(':')
    .appendValue(MINUTE_OF_HOUR, 2)
    .appendLiteral(':')
    .appendValue(SECOND_OF_MINUTE, 2)
    .toFormatter();
解析日期时间字符串

可以使用DateTimeFormatter类的parse(CharSequence text)方法将字符串解析为日期时间对象。

String dateTimeStr = "2022-02-22 22:22:22";
LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, formatter);

以上代码将解析日期时间字符串为LocalDateTime对象。

格式化日期时间对象

可以使用DateTimeFormatter类的format(TemporalAccessor temporal)方法将TemporalAccessor(例如LocalDateTime)对象格式化为字符串。

LocalDateTime dateTime = LocalDateTime.of(2022, 2, 22, 22, 22, 22);
String dateTimeStr = formatter.format(dateTime);

以上代码将格式化LocalDateTime对象为字符串2022-02-22 22:22:22

总结

DateTimeFormatterBuilder类是Java 8中java.time.format包中的一个类,用于创建和定制DateTimeFormatter日期时间格式化对象。可以使用DateTimeFormatter对象的parse()方法将字符串解析为日期时间对象,也可以使用format()方法将日期时间对象格式化为字符串。DateTimeFormatter类是线程安全的,可重用的对象,用于格式化日期时间字符串为日期、时间和日期时间对象。