Java的SimpleDateFormat的解析问题

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
Date date = sdf.parse("2018063");
System.out.println(sdf.format(date)); // =>202303

SimpleDateFormat对不符合的时间字符串不抛出异常,而是转换成了一个另类的时间,请问这该怎么让它不符合格式时抛出异常?

阅读 2.6k
3 个回答

找到答案了,默认采用的是宽松的策略,只要设置this.sdf.setLenient(false);即可启用严格策略

看样子,它好像认为这是符合规范的输入了,63 = 5 * 12 + 3

也许你可以看看有没有更严格的格式规范方法

joda-time

try{
            DateTime.parse("2018063", DateTimeFormat.forPattern("yyyyMM"));
        } catch(Exception e){
            e.printStackTrace();
        }
java.lang.IllegalArgumentException: Invalid format: "2018063" is malformed at "3"
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题