意外地将电话号码字符串传递到SimpleDateFormat的格式方法中有时会导致解析有效日期。
例如,传递数字“518-123-4567”(文字,带连字符)会以某种方式导致日期为“11/23/0517 05:27 AM”
我们在一个字符串可以代表许多不同事物的领域中使用它,并且我们假设一个带有数字和连字符的字符串在被解析为日期时会失败。我们的代码只是简单地检查 ParseException,并接受任何不抛出此类异常为有效的东西。 为什么这种字符串不会解析失败? 有没有更好的方法来检查字符串是否可能是日期?
private static Date getPromisedDate(String promisedText) {
SimpleDateFormat promsiedDateTimeFormat = new SimpleDateFormat("yyyyMMddHHmm");
if(null != promisedText) {
try {
return promsiedDateTimeFormat.parse(promisedText);
}
catch (ParseException e) { }
}
return null;
}