2015-12-18 4 views
2

Я хочу показать даты начала недели между двумя датами.Получить все даты начала недели между двумя датами

Предположим, я выбрал дату начала 8th Dec 2015 - 30th Dec 2015, то он должен вернуть результаты:

6th Dec 2015 
13th Dec 2015 
20th Dec 2015 
27th Dec 2015 
+0

Вы используя класс Java Calendar или библиотеку дат, такую ​​как JodaTime? Ответ может отличаться, мне просто интересно, если у вас есть предпочтение. – AdamMc331

+0

Я использую класс Java Calendar. – user2382771

ответ

2

Если вы используете JodaTime библиотеку (или готовы переключиться на него), который является личным предпочтением мои, вы можете использовать их функцию dayOfWeek() для этого. Он возвращает объект LocalDate.Property, который затем можно манипулировать, чтобы получить minimum value (фактически являясь началом недели).

Чтобы получить нужную дату и вернуть минимальный срок на этой неделе, попробуйте следующее:

LocalDate myDate = getSelectedDate(); 
return myDate.dayOfWeek().withMinimumValue(); 

Чтобы получить все даты до даты окончания, вы можете цикл:

List<LocalDate> weekDates = new ArrayList<>(); 
LocalDate tmp = getFirstDate().dayOfWeek().withMinimumValue(); 
// Loop until we surpass end date 
while(tmp.isBefore(getEndDate())) { 
    weekDates.add(tmp); 
    tmp = tmp.plusWeeks(1); 
} 
Смежные вопросы