Я хочу получить все недели в году с указанием даты начала и окончания рабочего дня для каждой недели в Java, начиная с текущей даты? - PullRequest
2 голосов
/ 24 июня 2019

Пример

В соответствии с сегодняшней датой 24 june 2019 (то есть 24-й неделей в году), тогда она должна показать следующие детали.

data:[
 week:24
 {
 startDate:24-06-2019,
 endDate: 28-06-2019
},
week: 25 
{
  startDate: 01-07-2019,
  endDate: 05-07-2019
}

Аналогичные данные за один год. Как я могу достичь этих данных в Java. Поскольку я новичок в Java, я изо всех сил пытаюсь решить эту проблему. Пожалуйста, помогите с объяснением или кодом, если это возможно.

PS: в году 53 недели.

1 Ответ

2 голосов
/ 24 июня 2019

Я бы выполнил это с хорошим старым циклом:

public void workingDayOfYear() {
    LocalDate date = LocalDate.of(2019, 6, 24); // Java 8 date
    int initialWeekOfyear = date.get(WeekFields.of(Locale.UK).weekOfWeekBasedYear());
    int weekOfYear = initialWeekOfyear;
    do {
        LocalDate firstDayOfWeek = date.with(WeekFields.of(Locale.UK).dayOfWeek(), 1L);
        LocalDate lastWorkingDayOfWeek = date.with(WeekFields.of(Locale.UK).dayOfWeek(), 5L);

        StringBuilder result = new StringBuilder("Week : ");
        result.append(weekOfYear);
        result.append(", start=");
        result.append(firstDayOfWeek);
        result.append(", end=");
        result.append(lastWorkingDayOfWeek);

        System.out.println(result.toString());
        date = date.plusWeeks(1);
    } while ((weekOfYear = date.get(WeekFields.of(Locale.UK).weekOfWeekBasedYear())) != initialWeekOfyear);
}

Выход:

Неделя: 26, начало = 2019-06-24, конец = 2019-06-28

Неделя: 27, начало = 2019-07-01, конец = 2019-07-05

...

Неделя: 24, начало = 2020-06-08, конец = 2020-06-12

Неделя: 25, начало = 2020-06-15, конец = 2020-06-19

Обратите внимание, что 53-я неделя на самом деле является первой неделей 2020 года.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...