我正在尝试将字符串转换为LocalDate
目的。但我收到以下错误。
private LocalDate getLocalDate(String year) {
String yearFormatted = "2015-01-11";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY-MM-dd");
LocalDate dateTime = LocalDate.parse(yearFormatted, formatter);
return dateTime;
}
这是错误
Caused by: java.time.format.DateTimeParseException: Text '2015-01-11' could not be parsed: Unable to obtain LocalDate from TemporalAccessor: {DayOfMonth=11, WeekBasedYear[WeekFields[SUNDAY,1]]=2015, MonthOfYear=1},ISO of type java.time.format.Parsed
at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1920) ~[na:1.8.0_102]
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1855) ~[na:1.8.0_102]
at java.time.LocalDate.parse(LocalDate.java:400) ~[na:1.8.0_102]
As 文档说,首都Y
格式模式中的“基于周的年份”,即周数所属的年份。这并不总是与日历年相同(尽管大多数情况下是相同)。 Java 足够聪明,能够认识到它无法确定从基于周的年月日中获取日期,因此它会抛出异常。
由于您的字符串格式与默认值一致LocalDate
格式(ISO 8601),最简单的解决方案是完全删除格式化程序,然后执行以下操作:
LocalDate dateTime = LocalDate.parse(yearFormatted);
通过此更改,您的方法将返回日期2015-01-11
正如我想你所预料的那样。另一个修复方法是替换YYYY
与任一小写yyyy
对于年代或uuuu
对于有符号的年份(其中 0 是 1 BC,-1 是 2 BC,等等)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)