Диапазон дат в диапазоне дат
На самом деле это задание показалось мне очень простым, но я немного застрял и был бы благодарен за некоторые подсказки: D
У меня есть несколько событий с начальным и конечным временем - и я хотел бы создать таблицу с календарными неделями.
Поэтому я написал метод для проверки, если событие в течение этой недели, чтобы покрасить его так:
private boolean inWeek(Date date, Entry pe) {
return ((pe.getStartsAt().after(Util.firstDayOfWeek(date)) || pe.getStartsAt().equals(Util.firstDayOfWeek(date)))
&& (pe.getEndsAt().before(Util.lastDayOfWeek(date)) || pe.getEndsAt().equals(Util.lastDayOfWeek(date))));
}
Этот случай был в порядке, если события продолжаются одну неделю. но что, если мероприятие начинается до этой недели или заканчивается после этой недели или даже длится несколько недель?
это стало очень сложным, и мое текущее решение было таким:
private boolean inWeek(Date date, Entry pe) {
return ( pe.getStartsAt().after(Util.firstDayOfWeek(date)) && pe.getEndsAt().after(Util.firstDayOfWeek(date)) && pe.getEndsAt().before(Util.lastDayOfWeek(date)) )
|| ( pe.getStartsAt().before(Util.lastDayOfWeek(date)) && pe.getStartsAt().after(Util.firstDayOfWeek(date)) && pe.getEndsAt().after(Util.lastDayOfWeek(date)) )
|| ( pe.getStartsAt().after(Util.firstDayOfWeek(date)) && pe.getEndsAt().before(Util.lastDayOfWeek(date)) )
|| ( pe.getStartsAt().before(Util.firstDayOfWeek(date)) && pe.getEndsAt().after(Util.lastDayOfWeek(date)) );
}
но это все еще не показывает правильную окраску в некоторых клетках. У кого-нибудь есть намеки на меня?
(... не предлагая йода раз ^^)