用parse方法验证字符串是否日期的问题Java认证考试

文章作者 100test 发表时间 2009:07:16 20:03:34
来源 100Test.Com百考试题网


  private boolean checkDate(String content) {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd").
  try {
  sdf.parse(content).
  return true.
  } catch (Exception e){
  return false.
  }
  }
  现在发现问题了,对于“2008-06-23asdf”这种情况是返回true的,哈哈,看来是孤陋寡闻了,基础不扎实了,看API上这样讲:
  在默认情况下,进行的分析是不严格的:如果输入的形式不是此对象的格式化方法使用的形式,但仍可作为日期进行分析,则分析将获得成功。客户机可能通过调用 setLenient(false) 来强调严格遵守该格式。
  按照API说法,将代码改成
  private boolean checkDate(String content) {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd").
  try {
  sdf. setLenient(false).
  sdf.parse(content).
  return true.
  } catch (Exception e){
  return false.
  }
  }
  运行结果“2008-06-23asdf”这种情况还是返回true的,但“2008-13-23”这种情况是返回false的
  最后改进程这种写法,可以适应"yyyy-MM-dd""yyyy-M-d""yyyy-MM-d""yyyy-M-dd"
  private boolean checkDate(String content) {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d").
  try {
  sdf.setLenient(false).
  content = content.replaceAll("-0", "-").
  Date d = sdf.parse(content).
  String s = sdf.format(d).
  return content.equals(s).
  } catch (Exception e){
  return false.
  }
  }

相关文章


浅谈JDBC怎么连接数据库Java认证考试
JDBC基础学习笔记总结与讨论Java认证考试
用parse方法验证字符串是否日期的问题Java认证考试
Java常遇问题:简单明了判断对象类型的技巧Java认证考试
为何选择JSF不选StrutsJava认证考试
谈谈Java加密技术(四)Java认证考试
漫谈Java加密技术(三)Java认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛