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;
    }

收藏 打印