如何使用“d.LLLY YYYY”模式从日期字符串创建java.time.LocalDate?

时间:2014-06-26 14:02:38

标签: java parsing date java-8

我正在尝试创建一个LocalDate对象:

LocalDate date = LocalDate.parse(
    "1. juli 2014", 
    DateTimeFormatter.ofPattern("d. LLLL YYYY", new Locale("nb", "NO"));

但我得到一个例外:

java.time.format.DateTimeParseException: Text '1. juli 2014' could not be parsed: 
    Unable to obtain LocalDate from TemporalAccessor: 
    {WeekBasedYear[WeekFields[MONDAY,4]]=2014, MonthOfYear=7, DayOfMonth=1},
    ISO of type java.time.format.Parsed
at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1919)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1854)
at java.time.LocalDate.parse(LocalDate.java:400)

异常似乎表明正确的数据在那里(" juli"是挪威语,是7号月份)。

1 个答案:

答案 0 :(得分:4)

所以,我找到了解决方案,即使是this probably is a Java 8 bug,正如@NimChimpsky所评论的那样。

使用"d. LLLL yyyy"(与年代相比)而不是"d. LLLL YYYY"(以周为基础的年份),解析按预期工作。