【问题标题】:Accepting only Valid Time仅接受有效时间
【发布时间】:2011-01-20 19:33:18
【问题描述】:

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

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

我想知道是否有办法将此视为例外。所以我只想接受格式化程序指定的内容(H 0-23 和 m 0-59),如果它不属于这些边界,则抛出异常或有某种方式知道。我想知道的是是否有办法在我正在使用的格式化程序类中执行此操作,或者是否应该使用 Scanner 类来完成(如何?),或者我是否必须自己编写解析和验证代码.我接近这个完全错误吗?我目前只是在尝试各种可能性,如果有更好的方法,请告诉我。

谢谢!

【问题讨论】:

    标签: java validation parsing time input


    【解决方案1】:

    我想通了,使用DateFormatsetLenient 方法。

    fmt.setLenient(false);
    

    现在输入任何不符合格式的内容(小时 = 0 到 23,分钟 = 0 到 59)都会引发异常 :)

    【讨论】:

    • 我认为您即将获得自学者徽章 :)
    猜你喜欢
    • 2021-06-05
    • 2021-12-28
    • 1970-01-01
    • 2016-07-22
    • 2015-10-19
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2020-02-07
    相关资源
    最近更新 更多