DateTimeFormatter dateFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)
.withLocale(Locale.UK);
LocalDate date = LocalDate.now(ZoneId.of("Pacific/Truk"));
System.out.println(date.format(dateFormatter));
int days = 5;
int i = 0;
while (i < days) {
date = date.plusDays(1);
DayOfWeek day = date.getDayOfWeek();
if (! day.equals(DayOfWeek.SATURDAY) && ! day.equals(DayOfWeek.SUNDAY)) {
i++;
}
}
System.out.println(date.format(dateFormatter));
Выходной сегодня (воскресенье, 8 июля):
08/07/2018
13/07/2018
13 июля - следующая пятница, поэтому очевидно, что пятница не была выходной.
есть что-то очевидное, чего мне не хватает (?)
Не думаю, что это так очевидно: класс Calendar
нумерует дни недели с 1 по воскресенье до 7 по субботу.Это происходит из американского понимания недель.Поэтому, когда вы решили, что день недели должен быть меньше или равен 5, вы включили воскресенье (1) - четверг (5) и отфильтровали пятницу (6) и субботу.
…если бы вы могли указать мне правильное направление на документацию ...
Чтобы найти эту информацию в документации, вам нужно было бы искать под каждой константой день недели, SUNDAY
и т. д., иперейдите по ссылке Постоянные значения полей.См. Ссылки внизу этого ответа.
Класс Calendar
оказался плохо спроектированным (несмотря на попытки исправить проблемы с Date
) и теперь тоже давно устарел.Вместо этого я рекомендую использовать java.time
, современный Java API даты и времени.Что я, конечно, и делаю в приведенном выше фрагменте кода.
Одна из многих проблем с Calendar
- это использование int
для дня недели (и других элементов, которые имеют имена, а не числа).Это неестественно и очень легко спутать.Можно сказать, что вы усилили проблему, сравнив ее с 5, а не с Calendar.FRIDAY
, но из-за американской нумерации последняя также не решила бы вашу проблему.java.time
's DayOfWeek
является перечислением и не приглашает для сравнения, используя «меньше чем» или «есть раньше» (хотя вы можете, и это будет работать в вашем случае).Код, ссылающийся на именованные константы SATURDAY
и SUNDAY
, не только понятнее, но и менее подвержен ошибкам.
Links