m0_59734531 2024-08-19 23:44 采纳率: 50%
浏览 2

为什么我的时间转化格式报错

package com.itheima.jdk8_time;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class _DataTimeFormatter {
    public static void main(String[] args) {
        //1.创建一个日期时间格式化器对象出来
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");

        //2.对时间进行格式化
        LocalDateTime now = LocalDateTime.now();
        System.out.println(formatter.format(now)); //方法一  正向

        System.out.println(now.format(formatter)); //方法二  逆向

        //解析时间,一般使用LocalDateTime提供的解析方法
        String dateStr = "2029年2月23日 12:23:32";
        LocalDateTime date = LocalDateTime.parse(dateStr, formatter);
        //System.out.println(date);


        //1.创建一个日期格式化器对象出来
        DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        //formatter是格式化对象,后续想把时间格式化要用到这个对象的format方法,返回值是String类型的
        System.out.println(formatter1);
        System.out.println("-------------------------");


        String dateStr1 = "2029年12月12日 12:12:11";
        LocalDateTime ldt = LocalDateTime.parse(dateStr1, formatter);
        System.out.println(ldt);
    }
}


报错内容:
Exception in thread "main" java.time.format.DateTimeParseException: Text '2029年2月23日 12:23:32' could not be parsed at index 5
    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    at java.time.LocalDateTime.parse(LocalDateTime.java:492)
    at com.itheima.jdk8_time._DataTimeFormatter.main(_DataTimeFormatter.java:19)

第一个解析报错,第二个却没问题

  • 写回答

2条回答 默认 最新

  • 一直免费一直爽 2024-08-19 23:45
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    报错的原因是在解析日期字符串时,使用的格式化器(DateTimeFormatter)的模式与输入的日期字符串不匹配。在第一个例子中,你使用了"yyyy年MM月dd日 HH:mm:ss"作为模式,但在解析时却使用了另一个模式"yyyy年MM月dd日 HH:mm:ss"。这两个模式是相同的,所以第二个例子可以正常解析。

    要解决这个问题,你需要确保在解析日期字符串时使用正确的模式。在这个例子中,你应该使用相同的模式来解析日期字符串。以下是修复后的代码:

    package com.itheima.jdk8_time;
    
    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    public class _DataTimeFormatter {
        public static void main(String[] args) {
            //1.创建一个日期时间格式化器对象出来
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
    
            //2.对时间进行格式化
            LocalDateTime now = LocalDateTime.now();
            System.out.println(formatter.format(now)); //方法一  正向
    
            System.out.println(now.format(formatter)); //方法二  逆向
    
            //解析时间,一般使用LocalDateTime提供的解析方法
            String dateStr = "2029年2月23日 12:23:32";
            LocalDateTime date = LocalDateTime.parse(dateStr, formatter);
            //System.out.println(date);
    
            //1.创建一个日期格式化器对象出来
            DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
            //formatter是格式化对象,后续想把时间格式化要用到这个对象的format方法,返回值是String类型的
            System.out.println(formatter1);
            System.out.println("-------------------------");
    
            String dateStr1 = "2029年12月12日 12:12:11";
            LocalDateTime ldt = LocalDateTime.parse(dateStr1, formatter1); // 修改为使用正确的模式
            System.out.println(ldt);
        }
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 8月19日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀