LocalDate для получения даты субботы на прошлой неделе - PullRequest
0 голосов
/ 01 октября 2018

Моя постановка проблемы - моя дата выглядит следующим образом = LocalDate - 20180923

Мне нужно написать функцию, которая принимает 3 ввода - дата (2018-09-23), смещение (1) => означает, что мынужно найти последнюю субботу за последнюю неделю, день (SATURDAY) => означает, что мы должны найти субботу.

Итак, в этом случае, если я вызову мою функцию getLastWeekDateForDay("20180923", 1, "SATURDAY") =>, это должно вернуть мне строку "20180922"

Другой пример - getLastWeekDateForDay("20180923", 2, "FRIDAY") => "20180914"

Я незнать, как подойти к этой проблеме.

1 Ответ

0 голосов
/ 01 октября 2018

Для чего-то подобного вы используете TemporalAdjusters, например:

public static String getLastWeekDateForDay(String date, int offset, DayOfWeek dayOfWeek) {
    return LocalDate.parse(date, DateTimeFormatter.BASIC_ISO_DATE)
                    .with(TemporalAdjusters.nextOrSame(dayOfWeek))
                    .minusWeeks(offset)
                    .format(DateTimeFormatter.BASIC_ISO_DATE);
}

Если dayOfWeek является String, используйте DayOfWeek.valueOf(String name).

Тест

System.out.println(getLastWeekDateForDay("20180923", 1, DayOfWeek.SATURDAY));
System.out.println(getLastWeekDateForDay("20180923", 2, DayOfWeek.FRIDAY));

Выход

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