Java,正则表达式的时间

时间:2018-05-28 12:29:17

标签: java regex datetime textfield dateformatter

我在Java eclipse界面中有一个文本字段,我想验证它只接受时间格式,但我不想要包括秒。

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

P.s TextField变量名是txtOra。

3 个答案:

答案 0 :(得分:3)

只需使用DateTimeFormatter

进行解析即可
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("H:mm");

LocalTime localTime = LocalTime.parse("16:16", dateTimeFormatter);

如果parse没有抛出异常,则表示您有有效时间。

然后使用LocalDate#isAfterLocalDate#isBefore

检查您的约束

在此查找以查找更多模式https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

答案 1 :(得分:1)

如果您使用的是java.time,则可以LocalTime使用isBeforeisAfter,如下所示:

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

答案 2 :(得分:0)

使用以下函数验证带有HH的时间字符串:MM(24小时格式)

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public boolean validate(final String time){
      String TIME24HOURS_PATTERN = 
                "([01]?[0-9]|2[0-3]):[0-5][0-9]";
      Pattern pattern = Pattern.compile(TIME24HOURS_PATTERN);
      Matcher matcher = pattern.matcher(time);
      return matcher.matches();

}