我尝试使用这个函数,但它在输入 '12/05/201a' 这种情况时无法正常工作,有人知道为什么会出现这种情况吗?
在我的测试中,我使用了这个代码:System.out.println(isThisDateValid("12/05/201a", "dd/MM/yyyy"));
,答案是 true
,但我希望结果应该是假的,因为年份包含字母。
public static boolean isThisDateValid(String dateToValidate, String dateFromat)
{
if (dateToValidate == null)
{
return false;
}
SimpleDateFormat sdf = new SimpleDateFormat(dateFromat);
sdf.setLenient(false);
try
{
//if not valid, it will throw ParseException
Date date = sdf.parse(dateToValidate);
System.out.println(date);
} catch (ParseException e)
{
e.printStackTrace();
return false;
}
return true;
}
201
作为年份。如果你把所有字母都放在年份的位置上,它将无法解析。因为它期望在年份的位置上只有1
位数字。 - SatyaTNVSimpleDateFormat
并不会忽略字母,它只是不会消耗整个字符串。这里有一个它不忽略字母的例子:http://ideone.com/gnbTwy - T.J. Crowder