Java的SimpleDateFormat的解析问题

正能量前线
  • 530
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
Date date = sdf.parse("2018063");
System.out.println(sdf.format(date)); // =>202303

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

回复
阅读 1.5k
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"
宣传栏