如何在不使用字符串日期的情况下将 java 8 中的 LocalDate 从一种格式转换为另一种 LocalDate 格式?

How to convert LocalDate from one format to another LocalDate format in java 8 without using String date?

LocalDate date = LocalDate.now();
System.out.println("date :" + date );//default format is yyyy-MM-dd
System.out.println(date.getClass().getName());//java.time.LocalDate

如何在 LocalDate 类型中格式化上面的 date 格式 dd-MM-yyyy。但是您可以使用字符串日期模式,即 dd-MM-yyyy。输出应仅为 LocalDate 类型。

此功能不属于 LocalDate class 的责任,class 是表示日期的不可变日期时间对象。它的职责是不关心String格式表示。

要生成或解析字符串,请使用 DateTimeFormatter class。

DateTimeFormatter pattern = DateTimeFormatter.ofPattern("dd-MM-yyyy");
String string = date.format(pattern);

回到LocalDate,使用相同的模式:

LocalDate dateParsed = LocalDate.parse(string, pattern);

但是新的 dateParsed 将再次转换为其默认的字符串表示形式,因为 LocalDate 覆盖了 toString() 方法。以下是文档中的内容:

The output will be in the ISO-8601 format uuuu-MM-dd.

您可能想要实现自己的 class 装饰器来处理格式设置。