Как найти выбранные дни недели между начальной и конечной датой в Java - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь найти лучший способ реализовать служебную функцию в 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...