当前位置: 首页 > 知识库问答 >
问题:

无法将字符串解析为LocalDate(Java 8)

松增
2023-03-14

我的输入是2015年7月1日日期的字符串表示形式,格式为“01-07-2015”。我试图将其解析为java.time.localdate变量:

final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-YYYY");
final String input = "01-07-2015";
final LocalDate localDate = LocalDate.parse(input, DATE_FORMAT);

基于DateTimeFormatterJavaDoc,我希望这能起作用。然而,我收到了一条非常友好和有益的信息:

原因:java.time.DateTimeException:无法从TemporalAccessor获取LocalDate:{DayofMonth=1,MonthofYear=7,WeekBasedYear[WeekFields[MONDAY,4]]=2015},类型为java.time.Format.Parsed的ISO

共有1个答案

后易安
2023-03-14

这个问题的答案是用“y”而不是“y”。

为了解释错误消息,让我们对其进行分解:

无法从TemporalAccessor获取LocalDate

  • dayofmonth=1,分析值为1
  • 的月份
  • monthofyear=7,以7
  • 值解析的月份
  • weekbasedyear[weekfields[MONDAY,4]]=2015,以2015
  • 为值解析的以周为单位的年份
  • ISO,这是ISO日历系统(默认值)

由于不可能从DayOfMontory+MonthOfYear+WeekBasedYear组合中生成LocalDate,因此会引发异常。

请注意,[weekfields[MONDAY,4]]部分涉及到一个事实,即有许多不同的方法来定义一个星期,在美国的星期从周日开始,但在ISO标准和欧盟中,它们从周一开始。

 类似资料:
  • 问题内容: 我的输入是以2015年7月1日格式为“ 01-07-2015”的日期的字符串表示形式。我正在尝试将其解析为一个变量: 基于JavaDoc,我希望它能起作用。但是,我收到了一条非常友好和有用的信息: 由以下原因引起:java.time.DateTimeException:无法从TemporalAccessor获取LocalDate:{DayOfMonth = 1,MonthOfYear

  • 我试图用localdate解析以下字符串:“04 Aug 2015”。 在尝试了DateTimeFormatters的一些变体之后,我在SO中寻找答案,并发现answer中给出的一些解析示例对我不起作用。经过进一步的研究,我发现Java14不能解析包含字符串月份的日期,如“jul”、“feb”。但在Java8&10中,它工作得完美无缺。 引发的异常是: 下面是在Java8/10上成功打印并在Jav

  • 问题内容: 我想将日期字符串解析为日期。我在寻找其他问题,但没有找到答案。 错误消息是java.text.ParseException:而且我不知道怎么了。 你能帮我吗。提前致谢。 编辑:好的。我将其翻译成英文,但是我仍然遇到同样的问题。我不想更改输入,因为它来自邮件数据库。还有其他想法吗? 我发现了问题。我是瞎子 来自数据库的St是,不是 谢谢。 问题答案: 在德语中,“欧洲中部时间”是“Mit

  • 我想将转换为,但由于某种原因无法转换。

  • 我想解析的字符串类型是:“36/2017”,其中36是一年中的一周,2017是一年。 我的代码: 我添加了一个默认日期。 我有这个信息: 任何想法?谢谢你!