Java,时间正则表达式

Java,时间正则表达式,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"

我在JavaEclipse接口中有一个textfield,我想验证它是否只接受时间格式,但我不希望包含秒

如何验证它以仅接受此格式,但从早上8:00到下午16:00


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"));
}