我使用的是NetBeans IDE 7.2。我有两个单独的类newDateTest.java
和newDateMethod.java
,我目前正在使用我的方法类来验证来自用户输入的日期,我在测试类中使用了该日期。
到目前为止,在我的测试类中,我有以下内容:
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);
}
然而,我不知道如何在我的方法类中验证日期,因为我对Java还是个新手。
有人能想出一个解决方案吗?我被教导使用的是日期格式设置器,但我不确定这是否适合这里?如果是这样,我不知道如何使用它
7条答案
按热度按时间esyap4oy1#
就像这样:
2021年7月13日更新:
我完全同意Ole V.V.下面的评论,所有的Java和Kotlin开发人员都应该更喜欢java.time包。
如果时间允许,我将添加一个更现代的例子。
7vux5j2d2#
看一下
SimpleDateFormat.parse(...)
,记住用try-catch包围。zc0qhyus3#
其标准JDK类为SimpleDateFormat:
或者,我建议使用Joda Time的
DateTimeFormat
。rbpvctlc4#
与其依赖于性能开销较小的异常,还可以使用Apache公共例程包中的DateValidator,如下所示:
虽然有一个小小的免责声明,但我还没有看过validate方法的实现,我不确定它是否使用了SimpleDateFormat...
0qx6xfy65#
Java.时间
我建议您使用java.time,这是一个现代的Java日期和时间API,它还提供了比其他一些答案中使用的旧
SimpleDateFormat
类更精确的验证。我的示例代码的输出为:
为了进行良好的验证,您可能应该添加一个范围检查。使用
isBefore
和/或LocalDate
的isAfter
方法。此外,如果您要对日期执行除验证之外的任何操作,则应该在程序中避免解析
LocalDate
(而不是字符串)。链接
Oracle tutorial: Date Time解释如何使用java.time。
vhmi4jdf6#
您应该使用
SimpleDateFormat.parse(String)
方法。如果传递的日期格式错误,它将抛出异常,在这种情况下您将返回false。oug3syen7#
可以使用joda-time。
如果
parseDateTime
抛出IllegalArgumentException
,则日期无效。