【问题标题】:How do I create a java.time.LocalDate from a date string using the "d. LLLL YYYY" pattern?如何使用“d.LLLL YYYY”模式从日期字符串创建 java.time.LocalDate?
【发布时间】:2014-06-26 14:02:38
【问题描述】:

我正在尝试创建一个 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 个月)。

【问题讨论】:

标签: java parsing date java-8


【解决方案1】:

所以,我找到了解决方案,尽管 @NimChimpsky 评论过 this probably is a Java 8 bug

通过使用"d. LLLL yyyy"(带有年份)而不是"d. LLLL YYYY"(带有基于周的年份),解析按预期工作。

【讨论】:

  • 有趣的事实:joda-time 使用 YYYY 作为时代,而 java-time 使用 yyyy
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
  • 2014-07-05
  • 2017-12-09
  • 1970-01-01
相关资源
最近更新 更多