Неравенство даты не работает в 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) {
...
}