Java,时间正则表达式
我在JavaEclipse接口中有一个textfield,我想验证它是否只接受时间格式,但我不希望包含秒 如何验证它以仅接受此格式,但从早上8:00到下午16:00Java,时间正则表达式,java,regex,datetime,textfield,dateformatter,Java,Regex,Datetime,Textfield,Dateformatter,我在JavaEclipse接口中有一个textfield,我想验证它是否只接受时间格式,但我不希望包含秒 如何验证它以仅接受此格式,但从早上8:00到下午16:00 p.s TextField变量名是txtOra。只需使用DateTimeFormatter DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("H:mm"); LocalTime localTime = LocalTime.parse("16:16"
p.s TextField变量名是txtOra。只需使用
DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("H:mm");
LocalTime localTime = LocalTime.parse("16:16", dateTimeFormatter);
如果parse
未引发异常,则您有一个有效时间
然后用LocalDate\isAfter
和LocalDate\isBefore
在此处查找更多模式使用以下函数验证带有HH:MM(24小时格式)的时间字符串
如果您正在使用,您可以在您可以使用的地方使用:
public static boolean checkDateIsCorrect(String input){
//Format your date
LocalTime time = LocalTime.parse(input, DateTimeFormatter.ofPattern("H:mm"));
//Then check if the time is between 8:00 and 16:00
return !time.isBefore(LocalTime.parse("08:00"))
|| !time.isBefore(LocalTime.parse("16:00"));
}
欢迎使用堆栈溢出。我建议您阅读并了解有关提出一个良好且广受欢迎的问题的信息。您缺少了几点。您使用的是哪种图形框架?它是swing、awt还是android?你确定它是TextField
还是JTextField
(这两个问题不同,解决方案可能取决于它)。可能相关:,模式:([8-9]| 1[0-6]):([0-5][0-9])
这个问题已经被问了很多次,并且得到了不同的回答。例如,H
可以单独接受8和08(因此您不需要可选部件)。你的方法拒绝了08:00和16:00的时间限制,我怀疑这不是询问者的本意。@OleV.V。我不明白你的方法拒绝了08:00和16:00的时间限制,我怀疑这不是询问者的意图。检查日期是否正确(“8:00”)
的预期结果是什么?实际结果如何?对于“16:00”
@OleV.V,同样的问题。我知道了,那现在呢?如果你想用这种方法解决它,我想你需要16:01。我还要验证解析后的时间是否在给定范围内。你如何扩展它以包括秒?“([01]?[0-9]| 2[0-3]):[0-5][0-9]:[0-5][0-9]”?@ennth,您给出的解决方案应在包括秒的时间内有效
public static boolean checkDateIsCorrect(String input){
//Format your date
LocalTime time = LocalTime.parse(input, DateTimeFormatter.ofPattern("H:mm"));
//Then check if the time is between 8:00 and 16:00
return !time.isBefore(LocalTime.parse("08:00"))
|| !time.isBefore(LocalTime.parse("16:00"));
}