Java使用SimpleDateFormat解析日期报Unparseable date异常如何解决
异常原因
- 格式串和待解析日期的结构不匹配:你定义的
SimpleDateFormat解析模式为"MMMM d,yyyy,h:mm",其中日期和年份之间的逗号后没有预留空格位置,但实际传入的日期字符串在逗号后带有空格,解析时字符位置无法对齐,直接触发解析失败。 - 小时占位符选型错误:模式中使用的小写
h对应12小时制小时(取值范围1~12),待解析时间的小时位为13,属于24小时制计时范畴,超出12小时制占位符的可识别范围,即便修正空格问题,该错误也会导致解析异常。
修复方案
只需要调整格式串,补上逗号后的空格、将12小时制的h替换为24小时制对应的大写H即可,修正后可正常运行的代码如下:
String date="November 7, 2022 13:33"; SimpleDateFormat sdf=new SimpleDateFormat("MMMM d, yyyy H:mm"); Date currentdate; currentdate=sdf.parse(date); System.out.println(currentdate);
补充提示:如果你的运行环境为JDK8及以上版本,更推荐使用
java.time包下的DateTimeFormatter、LocalDateTime替代老旧的SimpleDateFormat,前者是线程安全的,解析规则更严谨,不会出现隐式的类型转换错误。
内容的提问来源于stack exchange,提问作者YeJong Choe
相关产品推荐
相关产品推荐

