嗨,我有一个使用自定义格式字符串设置的简单日期格式:MMddyy
我给它解析以下值:4 1 01
我认为它不应该因为空格而解析,但是“简单日期格式”会返回日期
0001AD年4月4日
有什么想法吗?
这是预期的行为-您告诉DateFormat对象期望日期的6个字符的String表示形式,这就是您传递的内容。对空格进行了解析。但是,如果您使用“ 4x1x01”,则会出现错误。请注意,解析时,宽大处理默认为true,例如
DateFormat df = new SimpleDateFormat("MMddyy"); Date date = df.parse("4 1 01"); // runs successfully (as you know) DateFormat df = new SimpleDateFormat("MMddyy"); Date date = df.parse("41 01"); // 5 character String - runs successfully DateFormat df = new SimpleDateFormat("MMddyy"); df.setLenient(false); Date date = df.parse("41 01"); // 5 character String - causes exception DateFormat df = new SimpleDateFormat("MMddyy"); Date date = df.parse("999999"); // 6 character String - runs successfully DateFormat df = new SimpleDateFormat("MMddyy"); df.setLenient(false); Date date = df.parse("999999"); // 6 character String - causes exception
当宽大处理设置为true(默认行为)时,解析将尝试解密无效的输入,例如,第31天的第35天变为下个月的第4天。