“...在 org.bp.threeten.format.DateTimeFormatter 中不是 public” 尝试将 String 转换为 LocalDate 时出错

"... is not public in org.bp.threeten.format.DateTimeFormatter" error when trying to turn String to LocalDate

我正在尝试使用以下代码将字符串转换为 LocalDate

String end = sharedPref.getString("endDate", "Not available");
DateTimeFormatter formatter = new DateTimeFormatter("yyyy-MM-dd");
LocalDate endDate = LocalDate.parse(end, formatter);

但是显示标题中提到的错误。我如何解决它? 如果有更好的方法我愿意接受建议

没有采用字符串格式的构造函数,您必须像这样调用静态方法 ofPattern :

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

在您的情况下,您根本不需要显式格式化程序。

    LocalDate endDate = LocalDate.parse(end);

只需删除 formatter 的声明即可。您尝试解析的格式符合 ISO 8601。LocalDate 将此格式解析为默认格式,即没有格式化程序。

错误原因的解释见YCF_L的回答。

Link: ISO 8601.