Java 只接受有效时间

Java 只接受有效时间,java,validation,parsing,time,input,Java,Validation,Parsing,Time,Input,好的,在Java中,我想问用户一个24小时格式的时间。我已经设法利用DateFormat和SimpleDateFormat告诉它输入时间的格式,然后相应地解释它,如果它不遵循该格式,则抛出异常。以下是我所拥有的: DateFormat fmt = new SimpleDateFormat("HH:mm"); Scanner keyboard = new Scanner(System.in); try { String input = keyboard.nextLine(); D

好的,在Java中,我想问用户一个24小时格式的时间。我已经设法利用
DateFormat
SimpleDateFormat
告诉它输入时间的格式,然后相应地解释它,如果它不遵循该格式,则抛出异常。以下是我所拥有的:

DateFormat fmt = new SimpleDateFormat("HH:mm");
Scanner keyboard = new Scanner(System.in);

try {
    String input = keyboard.nextLine();
    Date theDate = fmt.parse(input);
    System.out.println(theDate.toString());
} catch (ParseException e) {
    System.out.println("Incorrect format!");
    e.printStackTrace();
}
如果我输入一个单词,它确实会抛出一个异常。但是,如果我输入类似于
234234:2342342
的内容,它实际上会计算出这些小时和分钟等于多少天,然后输出实际日期。例如,给定输入:

input: 23423423:232323
output: Fri Jul 29 07:03:00 PDT 4642
我想知道是否有办法将此视为例外。所以我只想接受格式化程序指定的内容(h0-23和m0-59),如果它不在这些界限之内,则抛出异常或有某种方式知道。我想知道的是,在我使用的格式化程序类中是否有这样做的方法,或者是否应该使用Scanner类(how?),或者是否必须自己编写解析和验证代码。我是不是完全错了?我目前正在尝试的可能性,所以如果有更好的方法,请让我知道


谢谢

我用
DateFormat
的方法算出了


现在输入任何不符合格式的内容(小时=0到23分钟=0到59分钟),就会抛出一个异常:)

我想你将获得一个自学徽章:)
fmt.setLenient(false);