正則表達式校驗日期格式

 如下正則可以滿足校驗:

public static boolean isDate(String date){
        /**
         * 判斷日期格式和範圍
         */
        String rexp = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))"
                +"[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))"
                +"|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))"
                +"[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";

        Pattern pat = Pattern.compile(rexp);
        Matcher mat = pat.matcher(date);
        boolean dateType = mat.matches();
        return dateType;
    }

最近導入excel日期數據時候,獲取日期格式的值,需要判斷日期格式,只要調用getDateVal(row,number),不符合格式的數據統統返回null,然後返回提示即可:

Date planStartTime = getDateVal(row, 1);
public Date getDateVal(Row row, int number) {
        //判斷是否是數值格式
        Date date = null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        if (row.getCell(number).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
            short format = row.getCell(number).getCellStyle().getDataFormat();
            //判斷日期格式是否是 2017/01/01
            /*
             * 14 yyyy-MM-dd / 2017/01/01
             * 31 yyyy年m月d日
             * */
            if (format == 14 || format == 31) {
                date = DateUtil.getJavaDate(row.getCell(number).getNumericCellValue());

                try {
                    date = sdf.parse(sdf.format(date));
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }

        }
        return date;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章