-1

我在 Java eclipse 界面中有一个文本字段,我想验证它是否只接受时间格式,但我不希望包含秒数。

我如何验证它是否只接受这种格式hh:mm但从早上 8:00 到下午 16:00。

ps TextField 变量名是txtOra。

4

3 回答 3

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

于 2018-05-28T12:35:13.753 回答
1

如果您正在使用,java.time您可以在可以使用的LocalTime地方使用isBefore,并且isAfter喜欢这样:

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"));
}
于 2018-05-28T12:39:25.853 回答
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();

}
于 2018-05-28T12:38:35.430 回答