String str1="2000-1-1";
String str2="2000-1-32";
String str3="2000/2/2";
str3="2018/09/09a";
boolean str3IsDate=isDate0(str3);
out.println("str3 isDate:"+str3IsDate);
输出:str3 isDate:false
//判断字符串是否为yyyy-MM-dd 或yyyy/MM/dd日期数据。
public static boolean isDate0(String str) {
boolean isDate=false;
if(str.length()>10)
{
return isDate;
}
else
{
isDate=isDate2(str);
if(isDate==false)
{
isDate=isDate1(str);
}
else
{
str=str.replace("/", "-");
isDate=isDate1(str);
}
return isDate;
}
}
//判断字符串是否为yyyy-MM-dd 日期数据。
//https://blog.csdn.net/habewow/article/details/80421157
public static boolean isDate1(String str) {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");//括号内为日期格式,y代表年份,M代表年份中的月份(为避免与小时中的分钟数m冲突,此处用M),d代表月份中的天数
try {
sd.setLenient(false);//此处指定日期/时间解析是否不严格,在true是不严格,false时为严格
sd.parse(str);//从给定字符串的开始解析文本,以生成一个日期
} catch (Exception e) {
return false;
}
return true;
}
//判断字符串是否为yyyy/MM/dd字符数据。
public static boolean isDate2(String str) {
SimpleDateFormat sd = new SimpleDateFormat("yyyy/MM/dd");//括号内为日期格式,y代表年份,M代表年份中的月份(为避免与小时中的分钟数m冲突,此处用M),d代表月份中的天数
try {
//sd.setLenient(false);//此处指定日期/时间解析是否不严格,在true是不严格,false时为严格
sd.parse(str);//从给定字符串的开始解析文本,以生成一个日期
} catch (Exception e) {
return false;
}
return true;
}