Java, регулярное выражение для времени - PullRequest
0 голосов
/ 28 мая 2018

У меня есть текстовое поле в интерфейсе Java Eclipse, для которого я хочу проверить его, чтобы он принимал только формат времени, но я не хочу, чтобы включались секунды.

Как проверить, чтобы он принимал только этот формат чч: мм , но с часов 8:00 утра до 16:00 дня.

Ps Имя переменной TextField - txtOra.

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

Используйте следующую функцию для проверки строки времени с ЧЧ: ММ (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();

}
0 голосов
/ 28 мая 2018

Если вы используете 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"));
}
0 голосов
/ 28 мая 2018

Просто проанализируйте его с помощью 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...