String::split
Как правило, для разделения строк в детали, используйте String::split
. См. Вопрос How to split a string in Java для большого обсуждения.
String[] parts = "07:11".split(":");
Arrays.toString (части): [07, 11]
Но я не рекомендовать этот подход в вашем случае. Читай дальше.
LocalTime
Java предлагает специально построенный класс для вас: LocalTime
. Этот класс представляет собой время суток без даты и без часового пояса. Часы представляют собой единый общий 24-часовой день, который игнорирует аномалии, такие как Daylight Saving Time (DST).
Ваши данные, такие как 07:11
, соответствуют стандарту ISO 8601. Классы java.time используют эти форматы по умолчанию при разборе или генерации строк, представляющих значения даты и времени. Поэтому нет необходимости указывать шаблон форматирования.
LocalTime localTime = LocalTime.parse("07:11");
Оттуда вы можете допросить часть часа или минуту.
int hourOfDay = localTime.getHour();
int minuteOfHour = localTime.getMinute();
Но ваша настоящая цель - сравнить время, чтобы узнать, находится ли он между 5:00 и 10:00. Например, это правда: 5 AM < 07:11 < 10 PM
. Поэтому не нужно разрывать время на куски. Вместо этого сделайте сравнение более прямым и более самодокументируемым, используя класс LocalTime
.
LocalTime start = LocalTime.of(5 , 0); // 5 AM = 05:00.
LocalTime stop = LocalTime.of(22 , 0); // 10 PM = 22:00.
Boolean isBetween =
(! localTime.isBefore(start))
&&
localTime.isBefore(stop)
;
См. Это code run live at IdeOne.com.
О том, что заявление сравнения:
- Первая часть спрашивает: «Является ли наша цель либо точно в начале или после начала?».Более короткий способ задать вопрос: «Является ли наша цель не перед началом?». Если «не раньше», то логически это должно быть либо точно, либо после.
- Вторая часть спрашивает, находится ли наша цель перед остановкой, а не «равно или раньше». Это означает, что мы используем подход Half-Open для определения промежутка времени. В Half-Open начало включительно в то время как окончание исключение. Это обычно используется в работе с датой. Я считаю, что использовать его последовательно на всей базе кода, а бизнес-логика устраняет большую часть путаницы и двусмысленности, которая возникает из-за промежутков времени.
Javascript! = Java. (Я исправил тег вопроса для вас.) – nnnnnn
Какой пример ввода, вы могли бы поделиться с нами? – FreedomPride
Если вы используете эти данные в строковом формате после выполнения равенства, самым простым способом будет добавить '0' в течение нескольких часов и минут менее 10. – Rahul