DateUtils.parseDate的缺陷

 Date d = DateUtils.parseDate("201809011", new String[]{"yyyyMMdd".intern()});

 Date d = DateUtils.parseDate("20180940", new String[]{"yyyyMMdd".intern()});

以上的转化并不会抛出异常

 DateUtils.parseDateStrictly 可以应对第二种情况,但是对于第一种情况仍然不能抛出异常

public class DateUtil {
    public static final String[] PATTERNS = new String[] { "yyyyMMdd" };

    /**
     * islegal:判断日期字符串是否合法 
* 合法返回true,不合法返回false.
* * @param dateStr * a String * @return boolean value
*/ public static boolean islegal(String dateStr) { if (Strings.isNullOrEmpty(dateStr)) { return false; } if (dateStr.length() != 8) { return false; } try { DateUtils.parseDateStrictly(dateStr, PATTERNS); } catch (Exception e) { return false; } return true; } }


你可能感兴趣的:(神坑)