工作日根据 java.time API 区域设置的正确顺序

weekdays in correct order based on Locale with java.time API

德国等一些国家/地区的一周从周一开始,而美国等一些国家/地区的一周从周日开始。 我在想 dayOfWeek.value 有一个基于 Locale 的版本,但我找不到它。 有没有办法根据 java.time API

的区域设置以正确的顺序获取工作日

DayOfWeek 不支持本地化文本形式,您需要 WeekFields

This enum provides access to the localized textual form of the day-of-week. Some locales also assign different numeric values to the days, declaring Sunday to have the value 1, however this class provides no support for this. See WeekFields for localized week-numbering.

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

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

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

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

您需要 WeekFields,它有一个采用 Locale.

of 方法

这里有一些代码可以让您按顺序列出星期几:

DayOfWeek firstDay = WeekFields.of(someLocale).getFirstDayOfWeek();
List<DayOfWeek> list = IntStream.range(0, 7)
    .mapToObj(x -> firstDay.plus(x))
    .collect(Collectors.toList());