我在Java eclipse界面中有一个文本字段,我想验证它只接受时间格式,但我不想要包括秒。
如何验证它仅接受此格式 hh:mm ,但是从早上8:00到下午16:00。
P.s TextField变量名是txtOra。
答案 0 :(得分:3)
只需使用DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("H:mm");
LocalTime localTime = LocalTime.parse("16:16", dateTimeFormatter);
如果parse
没有抛出异常,则表示您有有效时间。
然后使用LocalDate#isAfter
和LocalDate#isBefore
在此查找以查找更多模式https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
答案 1 :(得分: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"));
}
答案 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();
}