工作日根据带有java.time API的区域设置以正确的顺序排列



一些国家(如德国(从星期一开始一周,而像美国这样的一些国家从星期日开始一周。 我在想dayOfWeek.value有一个基于Locale的版本,但我找不到它。 有没有办法使用 java.time API 根据语言环境以正确的顺序获取工作日

你需要WeekFields,它有一个of方法,需要Locale

下面是一些代码,可按顺序获取一周中的几天列表:

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

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

此枚举提供对星期几的本地化文本形式的访问。某些区域设置还为日期分配不同的数值,声明星期日的值为 1,但此类不支持此值。有关本地化的周编号,请参阅周字段。

WeekFields germany = WeekFields.of(Locale.GERMANY);
System.out.println(germany.getFirstDayOfWeek());  //MONDAY
WeekFields us = WeekFields.of(Locale.US);
System.out.println(us.getFirstDayOfWeek());     //SUNDAY

最新更新