java中怎么判断输入的日期是否合法?

如题所述

importjava.util.*;\x0d\x0aimportjava.util.regex.*;\x0d\x0aimportjava.text.*;\x0d\x0a\x0d\x0a/**这个是按照楼主的描述使用通过判断字符验证时间合法性*/\x0d\x0apublicclassDateUtils2{\x0d\x0a\x0d\x0a//测试代码begin\x0d\x0apublicstaticvoidmain(String[]s){\x0d\x0a//以下是测试代码\x0d\x0atest("20099-1-1");\x0d\x0atest("20099-100-1");\x0d\x0atest("20099-1-100");\x0d\x0atest("2009-1-1");\x0d\x0atest("2009-1-31");\x0d\x0atest("2009-2-28");\x0d\x0atest("2009-2-29");\x0d\x0atest("2008-2-29");\x0d\x0a}\x0d\x0a\x0d\x0aprivatestaticvoidtest(Stringstringdate){\x0d\x0aSystem.out.println("输入["+stringdate+"]是否合法:"+validate(stringdate));\x0d\x0a}\x0d\x0a//测试代码end\x0d\x0a\x0d\x0a//==\x0d\x0a\x0d\x0a/**判断主方法*/\x0d\x0apublicstaticbooleanvalidate(StringdateString){\x0d\x0a//使用正则表达式测试字符符合dddd-dd-dd的格式(d表示数字)\x0d\x0aPatternp=Pattern.compile("\\d{4}+[-]\\d{1,2}+[-]\\d{1,2}+");\x0d\x0aMatcherm=p.matcher(dateString);\x0d\x0aif(!m.matches()){returnfalse;}\x0d\x0a\x0d\x0a//得到年月日\x0d\x0aString[]array=dateString.split("-");\x0d\x0aintyear=Integer.valueOf(array[0]);\x0d\x0aintmonth=Integer.valueOf(array[1]);\x0d\x0aintday=Integer.valueOf(array[2]);\x0d\x0a\x0d\x0aif(month<1||month>12){returnfalse;}\x0d\x0aint[]monthLengths=newint[]{0,31,-1,31,30,31,30,31,31,30,31,30,31};\x0d\x0aif(isLeapYear(year)){\x0d\x0amonthLengths[2]=29;\x0d\x0a}else{\x0d\x0amonthLengths[2]=28;\x0d\x0a}\x0d\x0aintmonthLength=monthLengths[month];\x0d\x0aif(day<1||day>monthLength){\x0d\x0areturnfalse;\x0d\x0a}\x0d\x0areturntrue;\x0d\x0a}\x0d\x0a\x0d\x0a/**是否是闰年*/\x0d\x0aprivatestaticbooleanisLeapYear(intyear){\x0d\x0areturn((year%4==0&&year%100!=0)||year%400==0);\x0d\x0a}\x0d\x0a}
温馨提示:答案为网友推荐,仅供参考