1. 程式人生 > >jsp判斷字串是否為yyyy-MM-dd 或yyyy/MM/dd日期資料。

jsp判斷字串是否為yyyy-MM-dd 或yyyy/MM/dd日期資料。

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