public static void checkTimes(String start, String end) {
try {
if (LocalTime.parse(start).isBefore(LocalTime.parse(end))) {
System.out.println("test1");// future date - good
} else {
System.out.println("fail2");// old date - bad
}
} catch (DateTimeParseException dtpe) {
System.out.println("error");
}
}
Давайте попробуем:
checkTimes("14:00", "12:00");
checkTimes("09:00", "12:00");
checkTimes("12:00", "10:00");
checkTimes("12:00", "15:00");
Это печатает:
fail2
test1
fail2
test1
Я считаю, что это согласуется с тем, что вы намеревались. Обратите внимание, что LocalTime
анализирует ваши строки без необходимости явного средства форматирования. Кроме того, если вы уверены, что ваш комбинированный список содержит только допустимые строки времени, вы можете пропустить конструкцию try
- catch
, поскольку DateTimeParseException
является непроверенным исключением.
Если startTime
и endTime
равны JComboBox
, я считаю, что вы даже можете заполнить LocalTime
объектами. Тогда вам не нужно анализировать, когда пользователь выбирает один из каждого. Ваш JComboBox
вызовет LocalTime.toString()
, который вернет строку типа 09:00
, которая в свою очередь отобразит поле со списком и позволит пользователю выбрать.
LocalTime[] times = { LocalTime.of(9, 0), LocalTime.of(10, 0), LocalTime.of(11, 0),
LocalTime.of(12, 0), LocalTime.of(13, 0), LocalTime.of(14, 0) };
JComboBox<LocalTime> combo = new JComboBox<>(times);
разложенном:
Я использую LocalTime
из java.time
, современный Java-интерфейс даты и времени. java.time
, как правило, гораздо приятнее работать, чем старые и устаревшие классы даты и времени, такие как SimpleDateFormat
, Date
и другие.
Ссылка: Обучающее руководство по Oracle: Дата и время , объясняющее, как использовать java.time
.