Java判断字符串是否符合yyyyMMdd日期格式

Java判断字符串是否符合yyyyMMdd日期格式

代码:

复制代码
    /** 
     * 判断参数的格式是否为“yyyyMMdd”格式的合法日期字符串 
     *  
     */  
    public static boolean isValidDate(String str) {  
        try {  
            if (str != null && !str.equals("")) {  
                if (str.length() == 8) {  
                    // 闰年标志  
                    boolean isLeapYear = false;  
                    String year = str.substring(0, 4);  
                    String month = str.substring(4, 6);  
                    String day = str.substring(6, 8);  
                    int vYear = Integer.parseInt(year);  
                    // 判断年份是否合法  
                    if (vYear < 1900 || vYear > 2200) {  
                        return false;  
                    }  
                    // 判断是否为闰年  
                    if (vYear % 4 == 0 && vYear % 100 != 0 || vYear % 400 == 0) {  
                        isLeapYear = true;  
                    }  
                    // 判断月份  
                    // 1.判断月份  
                    if (month.startsWith("0")) {  
                        String units4Month = month.substring(1, 2);  
                        int vUnits4Month = Integer.parseInt(units4Month);  
                        if (vUnits4Month == 0) {  
                            return false;  
                        }  
                        if (vUnits4Month == 2) {  
                            // 获取2月的天数  
                            int vDays4February = Integer.parseInt(day);  
                            if (isLeapYear) {  
                                if (vDays4February > 29)  
                                    return false;  
                            } else {  
                                if (vDays4February > 28)  
                                    return false;  
                            }  
                        }  
                    } else {  
                        // 2.判断非0打头的月份是否合法  
                        int vMonth = Integer.parseInt(month);  
                        if (vMonth != 10 && vMonth != 11 && vMonth != 12) {  
                            return false;  
                        }  
                    }  
                    // 判断日期  
                    // 1.判断日期  
                    if (day.startsWith("0")) {  
                        String units4Day = day.substring(1, 2);  
                        int vUnits4Day = Integer.parseInt(units4Day);  
                        if (vUnits4Day == 0) {  
                            return false;  
                        }  
                    } else {  
                        // 2.判断非0打头的日期是否合法  
                        int vDay = Integer.parseInt(day);  
                        if (vDay < 10 || vDay > 31) {  
                            return false;  
                        }  
                    }  
                    return true;  
                } else {  
                    return false;  
                }  
            } else {  
                return false;  
            }  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
            return false;  
        }  
    }  
复制代码

 

posted @   整合侠  阅读(13972)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示