首页 > 解决方案 > 如何将 LocalDate 格式更改为 LocalDate 而不会导致 String

问题描述

在需要将 JavaLocalDate的格式dd-MM-yyyy转换LocalDatedd/MM/yyyy.

尝试:

DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = // LocalDate value in dd-MM-yyyy format
String stringDate = dateFormat.format(date);
LocalDate convertedDate = LocalDate.parse(stringDate, dateFormat);

但它仍然导致返回dd-MM-yyyy格式的日期。有什么有效的方法来做到这一点?

标签: javaformattinglocaldate

解决方案


LocalDate.java 中的默认 toString 实现似乎是用“-”作为分隔符硬连线的。所以所有默认的打印语句都会产生相同的格式。似乎唯一的出路是使用格式化程序并获得字符串输出。

return buf.append(monthValue < 10 ? "-0" : "-")
            .append(monthValue)
            .append(dayValue < 10 ? "-0" : "-")
            .append(dayValue)
            .toString();

此外, LocalDate.parse(..) 的目的不是转换日期格式。它实际上只是在 String 中获取一个日期值并给出一个结果 LocalDate 实例。

希望这可以帮助。


推荐阅读