在Java8中,如何在不使用字符串日期的情况下将LocalDate从一种格式转换为另一种LocalDate格式?
如何在在Java8中,如何在不使用字符串日期的情况下将LocalDate从一种格式转换为另一种LocalDate格式?,java,string,date,formatting,localdate,Java,String,Date,Formatting,Localdate,如何在LocalDate中设置上述日期的格式键入格式 dd-MM-yyyy。但您可以使用字符串日期模式,即dd-MM-yyyy。输出应仅为LocalDate类型。此功能不是类的责任,类是表示日期的不可变日期时间对象。它的职责不是关心字符串格式的表示 要生成或分析字符串,请使用类 回到LocalDate,使用相同的模式: DateTimeFormatter pattern = DateTimeFormatter.ofPattern("dd-MM-yyyy"); String string = da
LocalDate
中设置上述日期的格式键入格式
dd-MM-yyyy
。但您可以使用字符串日期模式,即dd-MM-yyyy
。输出应仅为LocalDate
类型。此功能不是类的责任,类是表示日期的不可变日期时间对象。它的职责不是关心字符串格式的表示
要生成或分析字符串,请使用类
回到LocalDate
,使用相同的模式:
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("dd-MM-yyyy");
String string = date.format(pattern);
但是新的dateParsed
将再次转换为默认的字符串表示形式,因为LocalDate
覆盖了方法。以下是文档中的内容:
输出将采用ISO-8601格式UU-MM-dd
您可能希望实现自己的此类装饰器,该装饰器处理格式设置。如果不使用字符串date,则无法实现date.format(DateTimeFormatter.ofPattern(“dd-MM-yyyy”)
您不能更改方法LocalDate.toString()
的行为,因为类型LocalDate
是最终的。所以在LocalDate中从一种格式格式化为另一种格式是不可能的?我们需要LocalDate->String(用于格式化)->LocalDate吗,这是不可能的LocalDate
表示日期本身,而不是其格式。要以不同的格式显示日期(例如,“dd-MM-yyyy”
),必须使用DateTimeFormatter
对其进行格式化,生成的结果将是String
。当您使用相同的模式解析非常相同的字符串时,您将再次得到LocalDate
——但是System.out.println(“date:+date”)
将打印完全相同的内容-它的默认表示形式。提示:与硬编码格式化模式不同,您可以通过调用DateTimeFormatter.ofLocalized…
方法来自动对java.time进行本地化。
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("dd-MM-yyyy");
String string = date.format(pattern);
LocalDate dateParsed = LocalDate.parse(string, pattern);