Для меня непонятно почему, но написанный метод выдает строку 27 как false.
Добавил пару строк для проверки:
System.out.println(dateTime.getDayOfWeek());
System.out.println(dateTime.getHour());
Результат следующий:
SUNDAY
8
2016-04-24T08:00, is weekend - false
И вот собственно к мистике. Почему при сравнении 8 < 23 выдает false? Что я упустил?package com.javarush.task.pro.task16.task1613;
import java.time.DayOfWeek;
import java.time.LocalDateTime;
import java.time.Period;
import java.util.ArrayList;
import java.util.List;
/*
Фильтруем выходные
*/
public class Solution {
private static final int FRIDAY = 5;
private static final int SATURDAY = 6;
private static final int SUNDAY = 7;
private static final int WEEKEND_START_FRIDAY_CUT_OFF_HOUR = 22;
private static final int WEEKEND_END_SUNDAY_CUT_OFF_HOUR = 23;
public static void main(String[] args) {
List<LocalDateTime> dateTimeList = new ArrayList<>();
dateTimeList.add(LocalDateTime.of(2016, 4, 22, 18, 39));
dateTimeList.add(LocalDateTime.of(2016, 4, 22, 21, 59));
dateTimeList.add(LocalDateTime.of(2016, 4, 22, 22, 0));
dateTimeList.add(LocalDateTime.of(2016, 4, 23, 5, 0));
dateTimeList.add(LocalDateTime.of(2016, 4, 24, 8, 0));
dateTimeList.add(LocalDateTime.of(2016, 4, 24, 22, 59));
dateTimeList.add(LocalDateTime.of(2016, 4, 24, 23, 0));
dateTimeList.add(LocalDateTime.of(2016, 4, 25, 11, 5));
for (LocalDateTime dateTime : dateTimeList) {
System.out.println(dateTime + ", is weekend - " + isWeekend(dateTime));
}
}
public static boolean isWeekend(LocalDateTime dateTime) {
//напишите тут ваш код
boolean result = false;
int day = dateTime.getDayOfWeek().getValue();
int hour = dateTime.getHour();
if ((day>=FRIDAY && hour >= WEEKEND_START_FRIDAY_CUT_OFF_HOUR) &&
(day <= SUNDAY && hour < WEEKEND_END_SUNDAY_CUT_OFF_HOUR) ||
(day == SATURDAY)){
result = true;
}
return result;
}
}