在java中validation日期

我正在使用NetBeans IDE 7.2。 我有两个单独的类newDateTest.javanewDateMethod.java ,我目前正在使用我的方法类来validation我在测试类中使用的用户输入的日期。

到目前为止,在我的Test类中,我有以下内容:

 try { Prompt ="please enter a date in the format dd-mm-yyyy"; System.out.println(Prompt); String inputDate = in.next(); isValid = newDateMethod.validDate(input, input, input); if (isValid){ System.out.println("VALID DATE"); } else { System.out.println("INVALID DATE"); } }catch (ArrayIndexOutOfBoundsException oob) { System.out.println(oob); } } 

但是我不知道如何在我的方法类中validation日期,因为我对Java很新。

任何人都可以找到解决方案吗? 我被教导使用的那种东西是Date Formmater,但不确定这是否合适? 如果是这样就不知道如何使用它

喜欢这个:

 Date date = null; String inputDate = "07-01-2013"; try { DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); formatter.setLenient(false); date = formatter.parse(inputDate); } catch (ParseException e) { e.printStackTrace(); } 

看看SimpleDateFormat.parse(...)并记得用try-catch包围。

标准的JDK类是SimpleDateFormat :

 DateFormat fmt = new SimpleDateFormat("yourformathere"); // use fmt.parse() to check for validity 

或者,我建议使用Joda Time的DateTimeFormat

您可以使用Apache commons例程包中的DateValidator ,而不是依赖于往往具有较小性能开销的exception,如下所示:

 if (DateValidator.getInstance().validate(inputDate, "dd-MM-yyyy") != null) { // Date is valid } else { // Date is invalid } 

虽然小免责声明,我还没有看过validate方法的实现,我不确定它是否使用例如SimpleDateFormat ……

您应该使用SimpleDateFormat.parse(String)方法。 如果传递的日期格式错误,则抛出exception,在这种情况下返回false。

 public boolean validateDate(String date) { SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); try { sdf.parse(date); return true; } catch(ParseException ex) { return false; } }