Java判断时间格式是否为yyyyMMddHHmmss的合法格式

话不多说,直接上代码!!!

/**
 * 判断时间的格式是否为“yyyyMMddHHmmss”格式的合法日期字符串
 * @param str
 * @return
 */
public static boolean isValidDate(String str) {
    try {
        if (StringUtils.isNotEmpty(str)) {
            if (str.length() == 14) {
                // 闰年标志
                boolean isLeapYear = false;
                String year = str.substring(0, 4);
                String month = str.substring(4, 6);
                String day = str.substring(6, 8);
                String hour = str.substring(8, 10);
                String minute = str.substring(10, 12);
                String second = str.substring(12, 14);
                int intYear = Integer.parseInt(year);
                // 判断年份是否合法
                if (intYear < 1900 || intYear > 2200) {
                    return false;
                }
                // 判断是否为闰年
                if (intYear % 4 == 0 && intYear % 100 != 0 || intYear % 400 == 0) {
                    isLeapYear = true;
                }
                // 判断月份
                // 1.判断月份
                if (month.startsWith("0")) {
                    String unitMonth = month.substring(1, 2);
                    int intUnitMonth = Integer.parseInt(unitMonth);
                    if (intUnitMonth == 0) {
                        return false;
                    }
                    if (intUnitMonth == 2) {
                        // 获取2月的天数
                        int intDay4February = Integer.parseInt(day);
                        if (isLeapYear) {
                            if (intDay4February > 29) {
                                return false;
                            }
                        } else {
                            if (intDay4February > 28) {
                                return false;
                            }
                        }
                    }
                } else {
                    // 2.判断非0打头的月份是否合法
                    int intMonth = Integer.parseInt(month);
                    if (intMonth != 10 && intMonth != 11 && intMonth != 12) {
                        return false;
                    }
                }
                // 判断日期
                // 1.判断日期
                if (day.startsWith("0")) {
                    String unit4Day = day.substring(1, 2);
                    int intUnit4Day = Integer.parseInt(unit4Day);
                    if (intUnit4Day == 0) {
                        return false;
                    }
                } else {
                    // 2.判断非0打头的日期是否合法
                    int intDay = Integer.parseInt(day);
                    if (intDay < 10 || intDay > 31) {
                        return false;
                    }
                }
                // 判断时间
                int intHour = Integer.parseInt(hour);
                int intMinute = Integer.parseInt(minute);
                int intSecond = Integer.parseInt(second);
                if (intHour < 0 || intHour > 23 || intMinute < 0 || intMinute > 59 || intSecond < 0 || intSecond > 59) {
                    return false;
                }
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

你可能感兴趣的:(Java)