我创建了以下函数,以便将String转换为Date但我需要在执行此操作时捕获任何错误,因此返回null。
public static Date toDateStarted(String dateStarted) {
Date dtStarted = null;
SimpleDateFormat dtFormat = new SimpleDateFormat("MM/dd/yyyy h:mm:ss a");
try {
dtStarted = dtFormat.parse(dateStarted);
} catch (ParseException e) {
dtStarted = null;
}
return dtStarted;
}
日期dtError = toDateStarted(“错误/ 7/1 4:44:44 PM”);
这按预期返回null。
日期dtWrong = toDateStarted(“2016/7/1 4:44:44 PM”);
这返回错误的日期“Tue Dec 07 16:44:44 EST 168”
在最后一个重要的案例中,输入日期“2016/7/1 4:44:44 PM”格式错误。我正在通过2016/7/1而不是2016年7月1日,因此我认为ParseException将会发生但从未发生过。
在尝试之后... dtStarted =“Tue Dec 07 16:44:44 EST 168”所以我得到了一次返回。
时间是正确的(16:44 =下午4:44)然而日期(年,月,日)完全错误。
如果输入日期(dateStarted)不像SimpleDateFormat模式那样严格,我需要避免任何转换。
我该怎么办?欢迎进行优化。