当我执行以下代码时,我得到了一个真实的'即使我提供的日期不正确(2010-55-04)。有人可以澄清为什么会这样。
package basic;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class VerifyIfStrngIsValidDate {
public static boolean checkdate(String dt1)
{
SimpleDateFormat df1=new SimpleDateFormat("yyyy-mm-dd");
System.out.println(df1.toPattern());
df1.setLenient(false);
try {
df1.parse(dt1);
} catch (ParseException e) {
return false;
}
return true;
}
public static void main(String[] args) {
boolean res;
res=checkdate("2010-55-04");
System.out.println(res);
}
}
答案 0 :(得分:2)
您使用错误的格式掩码表示年月日期。使用M
数月,而不是m
,即分钟:
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
您将看到以下演示现在在进行此更改后失败。
答案 1 :(得分:0)
请注意,根据documentation,您设置的掩码不正确。
y is year
,m is minutes
和d is day of the month
。因此,55有效。您应该将mm
更改为MM
以解决此问题。
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");