Sou*_*are 3 java string datetime
意外地将电话号码字符串传递给SimpleDateFormat的格式方法有时会导致解析有效日期.
例如,传递数字"518-123-4567"(字面,带连字符)不知何故导致日期"11/23/0517 05:27 AM"
我们在一个String可以表示许多不同内容的区域中使用它,并且我们假设在解析为日期时,通常写入电话号码的方式中带有数字和连字符的字符串会失败.我们的代码只是检查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;
}
Run Code Online (Sandbox Code Playgroud)
你SimpleDateFormat处于"宽松"模式 - 这确实非常宽松.如果你使用
promsiedDateTimeFormat.setLenient(false);
Run Code Online (Sandbox Code Playgroud)
当你试图解析虚假数据时,它会抛出异常.
我个人认为默认情况下应该严格,但......