检查日期解析是否正确

时间:2010-03-30 10:46:37

标签: java parsing date

我有这个代码用于检查Date是否正常,但它并没有让所有情况都崩溃。例如,当text =“03/13/2009”,因为此日期不存在格式“dd / MM / yyyy”,它将日期解析为03/01/2010。当我尝试解析不正确的日期时,有没有办法改变这种行为并获得异常?什么是进行此验证的最佳方法?

public static final String DATE_PATTERN = "dd/MM/yyyy";

public static boolean isDate(String text){
     SimpleDateFormat formatter = new SimpleDateFormat(DATE_PATTERN);
     ParsePosition position = new ParsePosition(0);
     formatter.parse(text, position);
     if(position.getIndex() != text.length()){
         return false;
     }else{
        return true;
     }
}

感谢。

2 个答案:

答案 0 :(得分:7)

在解析之前需要将lenient设置为false,否则解析器将“猜测”并尝试更正无效日期

formatter.setLenient(false);

查看http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html#setLenient(boolean)

答案 1 :(得分:-3)

在我看来,验证日期的最佳方法是使用正则表达式,你可以在这里找到许多也用于验证日期http://regexlib.com/DisplayPatterns.aspx Java对正则表达式有很好的支持,这里有一些教程http://java.sun.com/docs/books/tutorial/essential/regex/index.html