Неравенство даты не работает в Android

Я хочу отобразить текст, когда время между 20:45 и 23:15

    Time today = new Time(Time.getCurrentTimezone());
    today.setToNow();

if ((today.hour>=20 && today.minute>=45) 
               && (today.hour<=23 && today.minute<=15) ){
           MainTextView.setText("my text");}

Проблема заключается в том, что таким образом минуты мешают друг другу (фактически невозможно, чтобы он был меньше 15 и в то же время больше 45), поэтому текст не отображается. Есть идеи?

1 ответ

Решение

Да, вам просто нужно исправить свою логику. Вам нужно только сравнить минуты, если этот час является пограничным. Например:

if ((today.hour > 20 || (today.hour == 20 && today.minute >= 45)) &&
    (today.hour < 23 || (today.hour == 23 && today.minute <= 15)) {
  ...
}

В качестве альтернативы, конвертируйте время в "минуты дня" и делайте арифметику на основе этого:

int minuteOfDay = today.hour * 60 + today.minute;
if (minuteOfDay >= 20 * 60 + 45 &&
    minuteOfDay <= 23 * 60 + 15) {
  ...
}
Другие вопросы по тегам