仅接受有效时间

豪尔赫·以色列·佩尼亚:

好的,所以在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类(如何做)(如何做),或者我是否必须自己编写解析和验证代码? 。我要完全解决这个问题吗?我目前正在尝试各种可能性,因此,如果有更好的方法,请告诉我。

谢谢!

豪尔赫·以色列·佩尼亚:

我使用DateFormatsetLenient方法弄清楚了

fmt.setLenient(false);

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用扫描仪仅接受有效的int作为输入

如何使文本框仅接受有效的电子邮件?

自制软件不接受有效选项

Hackerrank 不接受有效的解决方案

在仅接受有效UTF8的系统上存储任意二进制数据

Azure WebJob不接受有效的(?)CRON表达式

浏览器不接受有效的加密证书

约束Rust方法接受有效类型对的两个变量

AWS Javascript sdk registerThing模板主体不接受有效的json字符串

受密码保护的页面更改密码后不接受有效密码

续集在where子句中不接受有效的moment.js对象

NSData将不接受有效的base64编码的字符串

为什么我的脚本不接受有效日期作为用户输入?

Powershell用户输入验证不接受有效输入

jQuery数据表不接受有效的JSON数据:SignalR MVC-实时数据

编译器不接受有效代码?错误 C2447:“{”:缺少函数头(旧式正式列表?)

Java正则表达式,用于接受有效的主机名,IPv4或IPv6地址

仅默认参数有效

jQuery函数仅每秒有效

测试令牌的有效时间

来自NSItemProvider的URL的有效时间

如何检查有效的时间格式?

Clang和GCC接受有问题的sizeof

Cppcoro不接受有问题的等待结构的结果

Typescript Array [T]接受{..T}作为有效类型

仅当我在chrome调试器中附加了断点时,验证时间输入才有效

操作时间戳使新时间戳仍然有效

带有有效参数的敲除验证扩展了“仅当”

Java:KeyListeners确实有效,但仅当我键入空格时有效