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

日期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 04: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月28日
  • 已采纳回答 8月21日
  • 创建了问题 8月21日

悬赏问题

  • ¥15 【可追加酬金】宝塔部署买的php代码,ip访问正常,域名访问部分页面出现代码和数据库里都没有内容
  • ¥15 关于正则表达式中{}
  • ¥15 2台电脑 连一个网 隔几个小时同时掉线一次
  • ¥15 libreoffice C++开发环境构建
  • ¥20 找个会对接京东云鼎的技术人员,留下你的方式!
  • ¥15 一个代码问题,怎么打开,并且试运行
  • ¥15 cc2530音乐代码
  • ¥15 我进入WindowS 11安全模式后,需要重新设密码才能进电脑,然后重新设密码又需要网络,安全模式又不能使用网络,该如何解决
  • ¥30 有人能远程帮看一下吗
  • ¥15 初学者java安卓开发soket问题