Это:
if(hours <= 20){
if(minutes < 30){
совпадает с
if (hours <= 20 && minutes < 30)
Так что это приведет к тому, что ваше сообщение будет напечатано в первые полчаса каждого часа, до 2030 года включительно.
Если вы хотите проверить, является ли время до 2000 года, вам нужно сопоставить любое время до 2000 года или затем любое время между 2000 и 2030 годами:
if (hours < 20 || (hours == 20 && minutes < 30))
Но это будетлучше использовать правильную библиотеку времени, например java.time
:
if (LocalTime.of(hours, minutes).isBefore(LocalTime.of(20, 30)))