解析日期字符串触发ParseException,格式匹配却报错求助
问题原因与解决方案
哦,这个坑我踩过!你遇到的ParseException问题出在小时格式符的使用上:
- 你代码里用的
hh是12小时制的格式符,它的有效范围是1-12,而你的日期字符串里是14:42,这明显超出了12小时制的范围,加上你设置了setLenient(false)开启严格解析模式,直接就抛出异常了。 - 要解析24小时制的时间,你需要用
HH作为小时格式符,它的有效范围是00-23,刚好匹配14:42这种格式。
修正后的代码:
DateFormat cal = new SimpleDateFormat("yyyy-MM-dd HH:mm"); cal.setLenient(false); try { cal.parse("2018-01-01 14:42"); System.out.println("日期解析成功!"); } catch (Exception e) { e.printStackTrace(); }
额外小贴士:
如果你的日期字符串是12小时制(比如带上午/下午标记,像2018-01-01 02:42 PM),那才需要用hh,同时还要加上a来匹配上午/下午标识,格式串就变成yyyy-MM-dd hh:mm a。
内容的提问来源于stack exchange,提问作者Prateek Narendra
相关产品推荐
相关产品推荐

