请问java中有没有函数直接判断一个形如“2010-02-31”的字符串表示的日期是否存在,返回布尔值?

看到很多都是用抛出异常的方法判断,我想问的是有没有单独的函数直接返回boolean类型的呢?

//很简单啊,亲测

public static void main(String[] args){
System.out.println(isDateExist("2010-02-31"));
}

public static boolean isDateExist(String dtStr){//2010-02-31
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date d=null;
try {
d = sdf.parse(dtStr);
} catch (ParseException e) {
e.printStackTrace();
}
String result=sdf.format(d);//判断转换前后两个字符串是否相等即可知道合不合法
return result.equals(dtStr);
}

参考资料:还有其他问题的话,给我发百度消息

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-10
应该没有的,你可以试试这个函数。
@Test
public void testREG(){
String DatePattern = "^(?:([0-9]{4}-(?:(?:0?[1,3-9]|1[0-2])-(?:29|30)|"
+ "((?:0?[13578]|1[02])-31)))|"
+ "([0-9]{4}-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|1\\d|2[0-8]))|"
+ "(((?:(\\d\\d(?:0[48]|[2468][048]|[13579][26]))|"
+ "(?:0[48]00|[2468][048]00|[13579][26]00))-0?2-29)))$";

Pattern p = Pattern.compile(DatePattern);
Matcher m = p.matcher("2010-02-31");
boolean b = m.matches();
if (b) {
System.out.println("matches");
} else
System.out.println("no matches");
}
第2个回答  2010-08-10
Calendar()方法中有个after方法,它返回布尔值,可以去看看API
第3个回答  2010-08-11
判断日期是否有效要自已写
第4个回答  2010-08-15
给你个思路,用java的正则表达式匹配下就好了.绝对比楼上的方法来得简单,而且精确.
第5个回答  2010-08-17
jdk 的api中没有
可以自己写
相似回答
大家正在搜