给我一首歌的时间@ 2021-08-21 11:43 采纳率: 50%
浏览 590
已结题

日期LocalDate.parse方法调用异常问题

第一个异常:

        LocalDate parse = LocalDate.parse("2012/11/11", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
        System.out.println("输出: "  + parse);

控制台输出结果

输出: 2012-11-11
可以明显的看出输出的结果不符合我们的预期, 我们模板应该是 yyyy/MM/dd 结果却是 yyyy-MM-dd

第二个异常:

        LocalDate parse = LocalDate.parse("2012-11-11", DateTimeFormatter.ofPattern("yyyy/MM/dd"));

控制台输出

Exception in thread "main" java.time.format.DateTimeParseException: Text '2012-11-11' could not be parsed at index 4
    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    at java.time.LocalDate.parse(LocalDate.java:400)
    at com.huntkey.rx.sceo.dateapi.Jdk8DateUtil.main(Jdk8DateUtil.java:183)

我切换了一种 传参方法, 解析不了了

第三个异常:

        LocalDate parse = LocalDate.parse("2012-11-11", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        System.out.println("输出: "  + parse);

控制台输出

输出: 2012-11-11

这时候又正常了, 有点怪!

  • 写回答

3条回答 默认 最新

  • 奔腾的野马 2021-08-21 12:43
    关注

    System.out.println("输出: " + parse); 这样直接输出是不行的,相当于调用了LocalDate.toString()方法。
    然后LocalDate.toString()的源码实现是直接用“-”拼接的,如下图:
    img
    改成这样即可:

            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
            LocalDate parse = LocalDate.parse("2012/11/11",dateTimeFormatter );
            String dateStr = parse.format(dateTimeFormatter);
            System.out.println("输出: "  + dateStr);
    

    之所以你会有这三个问题,是因为 LocalDate.parse这个方法的含义你可能理解错了,看源码:
    img
    LocalDate.parse这个方法的意思是把传入的日期字符串使用指定pattern模板转换为LocalDate对象,而控制台输出的格式跟你指定的pattern模板无关,
    如果你要输出指定的格式,那就format一下就搞定了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月29日
  • 已采纳回答 8月21日
  • 创建了问题 8月21日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题