рабочие дни в правильном порядке на основе локали с java .time API - PullRequest
2 голосов
/ 21 января 2020

Некоторые страны, такие как Германия, начинают неделю с понедельника, а некоторые страны, например, США, начинают неделю с воскресенья. Я думал, что у dayOfWeek.value есть версия, основанная на Locale, но я не могу ее найти. Есть ли способ получить рабочие дни в правильном порядке в зависимости от локали с java .time API

Ответы [ 2 ]

4 голосов
/ 21 января 2020

Вам нужно WeekFields, у которого есть метод of, который принимает Locale.

Вот код, который дает вам список дней недели в порядке :

DayOfWeek firstDay = WeekFields.of(someLocale).getFirstDayOfWeek();
List<DayOfWeek> list = IntStream.range(0, 7)
    .mapToObj(x -> firstDay.plus(x))
    .collect(Collectors.toList());
3 голосов
/ 21 января 2020

DayOfWeek не поддерживает локализованную текстовую форму, вам нужно WeekFields

Это перечисление предоставляет доступ к локализованной текстовой форме дня дня. неделя. Некоторые локали также назначают разные значения числовых значений c дням, объявляя воскресенье значением 1, однако этот класс не поддерживает это. См. WeekFields для локализованной нумерации недель.

WeekFields germany = WeekFields.of(Locale.GERMANY);

System.out.println(germany.getFirstDayOfWeek());  //MONDAY

WeekFields us = WeekFields.of(Locale.US);

System.out.println(us.getFirstDayOfWeek());     //SUNDAY
...