tl; др
Использовать современные java .time класс, LocalTime
.
( ! localTime.isBefore( LocalTime.of( 19 , 0 ) ) ) // Is not before the start… (meaning, is equal to or later than)
&& // …and…
localTime.isBefore( LocalTime.of( 7 , 0 ) ) ; // is before the end.
java .time
Никогда не используйте Calendar
или Date
классы. Эти ужасные классы были вытеснены годами go современными java .time классами, определенными в JSR 310.
LocalTime start = LocalTime.of( 19 , 0 ) ; // 7 PM.
LocalTime end = LocalTime.of( 10 , 0 ) ; // 10 AM.
Для определения текущего времени требуется часовой пояс. В любой конкретный момент время и дата варьируются по всему земному шару в зависимости от зоны.
Если вы хотите использовать текущий часовой пояс JVM по умолчанию, позвоните ZoneId.systemDefault()
.
ZoneId z = ZoneId.of( "Africa/Casablanca" ) ;
LocalTime localTime = LocalTime.now( z ) ;
Спросите, равняется ли текущее время или более поздние, чем начало и до конца. Совет: другой способ задать «равно или позже» - это «не раньше».
boolean withinTimeRange = ( ! localTime.isBefore( start ) ) && localTime.isBefore( end ) ;
Для ранних Android до 26, добавьте библиотеку ThreeTenABP в свой проект получить большую часть функциональности java .time с почти таким же API.