public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
String dateStr = "35/35/1985";
Date date = sdf.parse(dateStr);
Run Code Online (Sandbox Code Playgroud)
我期待运行时异常,如日期分析异常,但返回日期对象是 Sat Dec 05 00:00:00 IST 1987
通过什么逻辑字符串35/35/1985
解析到目前为止Sat Dec 05 00:00:00 IST 1987
?
更新: -如果我设置setLenient(false)
,它会抛出异常.但是,如果我通过35/35/1985
解析到目前为止的逻辑字符串,它是真的Sat Dec 05 00:00:00 IST 1987
吗?
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
String dateStr = "35/35/1985";
Date date = sdf.parse(dateStr);
Run Code Online (Sandbox Code Playgroud)
回答你的"逻辑背后"问题:嗯,它将被解析为
xx.xx.1985
-> set / add 35 Months (xx.35.1982 -> xx.11.1987)
-> set / add 35 Days (35.11.1987 -> 05.12.1987)
Run Code Online (Sandbox Code Playgroud)
如果您不想要此行为,请将lenient设置为false:http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#setLenient%28boolean%29