校验时间问题 投机取巧的办法是split("-"),然后看结果length是否大于0. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写个正则就好了。或者兼容性考虑的话,直接将输入的用SimpleDateFormate formate一下 /** * 判断字符串是否是有效的日期, 格式"yyyy-MM-dd,yyyy-MM-d,yyyy-M-dd,yyyy-M-d * "yyyy/MM/dd,yyyy/MM/d,yyyy/M/dd,yyyy/M/d" "yyyyMMdd" * * @param date * 日期字符串 * @return 是则返回true,否则返回false */ public static boolean isValidDate(String date) { if ((date == null) || (date.length() < 8)) { return false; } try { boolean result = false; SimpleDateFormat formatter; char dateSpace = date.charAt(4); String format[]; if ((dateSpace == '-') || (dateSpace == '/')) { format = new String[4]; String strDateSpace = Character.toString(dateSpace); format[0] = "yyyy" + strDateSpace + "MM" + strDateSpace + "dd"; format[1] = "yyyy" + strDateSpace + "MM" + strDateSpace + "d"; format[2] = "yyyy" + strDateSpace + "M" + strDateSpace + "dd"; format[3] = "yyyy" + strDateSpace + "M" + strDateSpace + "d"; } else { format = new String[1]; format[0] = "yyyyMMdd"; } for (int i = 0; i < format.length; i++) { String aFormat = format[i]; formatter = new SimpleDateFormat(aFormat); formatter.setLenient(false); String tmp = formatter.format(formatter.parse(date)); if (date.equals(tmp)) { result = true; break; } } return result; } catch (ParseException e) { return false; } } 结果是false public static void main(String[] args) { timeValidata time=new timeValidata(); boolean result = time.isValidDate("2014-01-15 21:26:43"); System.out.println(result); }String tmp = formatter.format(formatter.parse(date)); if (date.equals(tmp)) { result = true; break; }tmp是2014-01-15 date是2014-01-15 21:26:43 不相等 直接用DateFormat的严格解析就是了DateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");df.setLenient(true);//设置严格解析只要不是这个格式的都会报异常try{ df.parse(你的时间字符串);}catch(Exception e){ //异常就说明格式不符合} SWT的GC画图问题 高分,请问各位大侠,哪位有李兴华老师上课的J2SE的上课笔记? java char问题 CORBA cast问题 求助啊! 关于java基础类库的使用期限问题 executeUpdate和executeQuery语句返回一个什么值是代表查询,修改失败? 菜鸟请问各位大虾:JSP中如何将int型和String型如何相互转换? 全部更新数据,真是难!难!难!难!难!难!难!难!难! 如何使用Java语言确定日期的准确性? 大神求教 poi 解析excel2007 样式设置问题
formate一下
* 判断字符串是否是有效的日期, 格式"yyyy-MM-dd,yyyy-MM-d,yyyy-M-dd,yyyy-M-d
* "yyyy/MM/dd,yyyy/MM/d,yyyy/M/dd,yyyy/M/d" "yyyyMMdd"
*
* @param date
* 日期字符串
* @return 是则返回true,否则返回false
*/
public static boolean isValidDate(String date) {
if ((date == null) || (date.length() < 8)) {
return false;
}
try {
boolean result = false;
SimpleDateFormat formatter;
char dateSpace = date.charAt(4);
String format[];
if ((dateSpace == '-') || (dateSpace == '/')) {
format = new String[4];
String strDateSpace = Character.toString(dateSpace);
format[0] = "yyyy" + strDateSpace + "MM" + strDateSpace + "dd";
format[1] = "yyyy" + strDateSpace + "MM" + strDateSpace + "d";
format[2] = "yyyy" + strDateSpace + "M" + strDateSpace + "dd";
format[3] = "yyyy" + strDateSpace + "M" + strDateSpace + "d";
} else {
format = new String[1];
format[0] = "yyyyMMdd";
}
for (int i = 0; i < format.length; i++) {
String aFormat = format[i];
formatter = new SimpleDateFormat(aFormat);
formatter.setLenient(false);
String tmp = formatter.format(formatter.parse(date));
if (date.equals(tmp)) {
result = true;
break;
}
}
return result;
} catch (ParseException e) {
return false;
}
}
结果是false
public static void main(String[] args)
{
timeValidata time=new timeValidata();
boolean result = time.isValidDate("2014-01-15 21:26:43");
System.out.println(result);
}
String tmp = formatter.format(formatter.parse(date));
if (date.equals(tmp)) {
result = true;
break;
}
tmp是2014-01-15 date是2014-01-15 21:26:43 不相等
df.setLenient(true);//设置严格解析只要不是这个格式的都会报异常
try{
df.parse(你的时间字符串);
}catch(Exception e){
//异常就说明格式不符合
}