java實現判斷時間是否為合法時間


  最近遇到一個需求,輸入字符串,判斷為日期的話再進行后面的比較大小之類的操作,但是合法日期的格式也是比較多的,利用正則表達式又太長了。所以后面利用的方法就是,先把輸入的字符串轉成一種固定的時間格式,然后利用java轉String為Date的方法,看程序是否拋出異常來判斷日期是否合法,需要注意的是需要將驗證設置為嚴格的,也就是lenient設置為false,默認為true,不然的會出現例如2019-03-1223為正確的日期類型,主要是直接把1223換算成年月日加上去了。

  下面代碼實現:

 /**
     * @author Carol
     * @date 2020年7月14日18:11:16
     * 驗證字符串是否為合法日期 支持2019-03-12 2019/03/12 2019.03.12   HH:mm:ss HH:mm常用格式
     * @param date
     * @return
     */
    public static boolean verifyDateLegal(String date) {
        if ((date.contains("-") && date.contains("/"))
                || (date.contains("-") && date.contains("."))
                || (date.contains("/") && date.contains("."))){
            return false;
        }
        date.trim();
        StringBuilder timeSb = new StringBuilder();
        date = date.replaceAll("[\\.]|[//]", "-");
        String[] time = date.split(" ");
        timeSb.append(time[0]);
        timeSb.append(" ");
        if (time.length > 1) {
            timeSb.append(time[1]);
        }
        int i = time.length > 1 ? time[1].length() : 0;
        for ( ; i < 8 ; i ++) {
            if (i == 2 || i == 5){
                timeSb.append(":");
            } else {
                timeSb.append("0");
            }
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            sdf.setLenient(false);
            sdf.parse(timeSb.toString());
            return true;
        } catch (ParseException e) {
            return false;
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM