2015-12-10 2 views
0

Я пытаюсь проверить, если текущий час падает между 7AM и 10AMКак проверить, если текущий час находится между определенным диапазоном

Я делаю это так

Calendar cal = Calendar.getInstance(); 
cal.setTime(new Date());    
int hour = cal.get(Calendar.HOUR_OF_DAY); 
if(hour >= 7 && hour <= 10)    
{ 

} 

Пожалуйста, скажите мне, если это действительный подход, который следует соблюдать

+3

Да, это действительный подход. –

+1

Вы проверили это? если это не работает, в чем проблема? – benzonico

+0

Да, это действительно, также 'cal.setTime (новая дата()); 'не требуется – Yazan

ответ

1

Да, это действительный подход. Вы можете также использовать новый Time API (требуется Java 8)

import java.time.LocalTime; 
... 
int hour = LocalTime.now().getHour(); 

Это немного короче, чтобы получить час. Существует также перегруженный метод now(ZoneId zoneId).

Или сделать это один вкладыш с временного запроса (также требуется Java 8):

Boolean isBetween7and10AM = LocalTime.now().query(date -> date.get(ChronoField.CLOCK_HOUR_OF_DAY) >=7 && 
      date.get(ChronoField.CLOCK_HOUR_OF_DAY) < 10); 
+1

Просто помните, что для этого подхода требуется (новая) среда выполнения Java 8 в среде выполнения. –

+0

Это правда. Просто добавил к ответу. –

0

Угу. Это выглядит хорошо. Помните, что это поле Calendar зависит от часового пояса.

BTW: Поместите начальную фигурную скобку в конец предыдущей строки, так как это обычный стиль форматирования кода.

:-)

Смежные вопросы