Я пытаюсь найти лучший способ реализовать служебную функцию в Java, чтобы найти выбранные дни недели между начальной и конечной датой.Я ограничен Java 7, поэтому я ищу оптимальное решение с библиотекой Joda-Time.Я разработал утилиту, которая описана ниже, но, похоже, она работает плохо, если выбран только один день.Кто-нибудь может предложить лучшие подходы?Заранее спасибо.
public static List<DateTime> findAllDaysForThePattern(long fromDateTime, long toDateTime, Set<Integer> selectedDaysOfWeek) {
DateTime start=null;
DateTime end=null;
List<DateTime> resultDates = new ArrayList<>();
try {
start = new DateTime(getTimestampUptoDaysPrecision(fromDateTime));
end = new DateTime(getTimestampUptoDaysPrecision(toDateTime));
while (start.isBefore(end)||start.equals(end)) {
if(selectedDaysOfWeek.contains(start.getDayOfWeek())) {
resultDates.add(start);
}
start=start.plusDays(1);
}
}catch(Exception e) {
e.printStackTrace();
}
return resultDates;
}
public static void main(String[] args) {
long start = 1521392661000L;//March 18, 2018 5:04:21 PM
long end = 1524029319000L;//April 18, 2018 5:28:39 AM
Set<Integer> selectedDaysOfWeek = new HashSet<>(1,2);//1-Monday--7-Sunday
selectedDaysOfWeek.add(1);
selectedDaysOfWeek.add(2);
List<DateTime> resultDates = findAllDaysForThePattern(start,end, selectedDaysOfWeek);
for(DateTime date: resultDates) {
System.out.println(date);
}
}