java中如何验证2005-04-18这样的日期格式,请高手指教!!! 使用一个SimpleDateFormat对象parse一下,如果失败,会返回null。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一步,使用String的matches方法初步验证是否符合pattern:"\\d{4}-\\d{2}-\\d{2}"。然后,使用一个SimpleDataFormat对象parse一下,如果失败,会返回NULL。 楼上的办法检测不出来2005-04-31这样的日期(会parse为2005.5.1)给个办法供参考 /** * 检查日期合法性 * @param s String * @return boolean */ public static boolean checkDate(String s) { boolean ret = true; try { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); ret = df.format(df.parse(s)).equals(s); } catch (ParseException e) { ret = false; } return ret; } 啊?这样啊。Java类库也太不厚道了,4月31日就是5月一日,寒一个。-_- DateFormat类有个方法setLenient,默认是true,要是设置成false的话不出出现“4月31日就是5月一日”的问题了,因为SimpleDataFormat从DateFormat继承的,所以SimpleDataFormat也可以用这个方法 楼上说的不错,以前没注意过这个函数,学习。 DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); df.setLenient(false); df.parse(s); JAVA核心技术 随机加权序列 Java怎样读取ACCESS数据库文件?非常急!!!! 怎样用java 实现刷新的功能 使用智能abc输入法会引起java虚拟机报错。。。 Java 缓存系统设计 孙新的视频教材有配套教材吗~ 窗体关闭时关闭数据库连接后抛出这样的异常,令人费解 一个利用递归求阶乘的程序问题!!! 关于线程的一个问题,请高手指点 求救<关于Socket与计时器> 怎样在JAVA中直接调用WINDOWS 本地的 FileChooser, Swing 自带的那个又丑又慢,还不能连接共享计算机文件夹
然后,使用一个SimpleDataFormat对象parse一下,如果失败,会返回NULL。
给个办法供参考
/**
* 检查日期合法性
* @param s String
* @return boolean
*/
public static boolean checkDate(String s) {
boolean ret = true;
try {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
ret = df.format(df.parse(s)).equals(s);
}
catch (ParseException e) {
ret = false;
}
return ret;
}
Java类库也太不厚道了,4月31日就是5月一日,寒一个。-_-
df.setLenient(false);
df.parse(s);