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

为什么我的模式(“YYYYMM”)不能用DateTimeFormatter(Java8)解析

蔺霄
2023-03-14
SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
format.setLenient(false);
Date d = format.parse(date);

但是当我使用Java8DateTimeFormatter时,

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMM");
LocalDate localDate = LocalDate.parse(date, formatter);

它抛出

java.time.format.DateTimeParseException:无法分析文本“201510”:无法从TemporalAccessor获取LocalDate:{Year=2015,MontHofYear=10},ISO类型为java.time.Format.Parsed

共有1个答案

韦阳晖
2023-03-14

问自己一个问题:哪天应该用字符串“201510”解析localdate需要一个day,但是由于要解析的日期中没有day,因此无法构造localdate的实例。

如果只想解析一年和一个月,则可以使用YearMonth对象:

YearMonth localDate = YearMonth.parse(date, formatter);

但是,如果您真的希望从这个字符串中解析localdate,您可以构建自己的DateTimeFormatter,以便它使用每月的第一天作为默认值:

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                                .appendPattern("yyyyMM")
                                .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
                                .toFormatter();
LocalDate localDate = LocalDate.parse(date, formatter);
 类似资料:
  • 问题内容: 如果html文件是本地文件(在我的C驱动器上),则可以使用,但是如果html文件在服务器上并且图像文件是本地文件,则无法使用。这是为什么? 任何可能的解决方法? 问题答案: 如果客户端可以请求本地文件系统文件,然后使用JavaScript找出其中的内容,则将是一个安全漏洞。 解决此问题的唯一方法是在浏览器中构建扩展。Firefox扩展和IE扩展可以访问本地资源。Chrome的限制更为严

  • 问题内容: 我在使用JMockit(1.21)模拟时遇到问题。请参阅以下内容,以简化我的实际课程。基本上我在我的代码中使用了某个地方,我希望对其进行模拟。 至于我的测试代码,此测试有效。 该测试失败。 我收到的错误消息: 我可以嘲笑像其他系统类和这样的,但只是似乎没有工作(也没有为此事)。我知道如何规避这是我的考验,所以我没有受到任何阻碍,但我不明白为什么不能嘲笑。删除Expectations块将

  • 我升级到Java 8,并试图用一个新的lamdba表达式替换通过映射的简单迭代。循环搜索空值,如果找到,则抛出异常。旧的Java 7代码如下所示: 我尝试将其转换为Java 8,如下所示: 有人能解释为什么这里不允许语句以及如何纠正这一点吗? Eclipse的快速修复建议在我看来不太对劲......它只是用块包围语句:

  • fReceiveBuffer是否存在一个视频帧? 哦,这里是我的FFMPEG初始化代码,需要打开相关视频解码器:http://paste.ubuntu.com/12529760//

  • 为什么我无法解析符号“r”..??。当我在这个.class文件上创建新活动时,我会遇到一个问题,为什么我不知道在创建类之后我什么也没做。(在R.Layout.Dashboard中)。(“红色R”)。 请帮帮我.