我在 Java eclipse 界面中有一个文本字段,我想验证它是否只接受时间格式,但我不希望包含秒数。
我如何验证它是否只接受这种格式hh:mm但从早上 8:00 到下午 16:00。
ps TextField 变量名是txtOra。
我在 Java eclipse 界面中有一个文本字段,我想验证它是否只接受时间格式,但我不希望包含秒数。
我如何验证它是否只接受这种格式hh:mm但从早上 8:00 到下午 16:00。
ps TextField 变量名是txtOra。
只需解析它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
如果您正在使用,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"));
}
使用以下函数验证具有 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();
}