【问题标题】:List<DayOfWeek> in localized order按本地化顺序列出<DayOfWeek>
【发布时间】:2019-10-06 09:43:07
【问题描述】:

我们有DayOfWeek 枚举以标准ISO 8601 顺序定义一周中的几天。

我想要这些对象的List,其顺序与Locale 相符。

我们可以很容易地确定语言环境的一周的第一天。

Locale locale = Locale.CANADA_FRENCH ;
DayOfWeek firstDayOfWeek =  WeekFields.of( locale ).getFirstDayOfWeek() ;

设置List

List< DayOfWeek > dows = new ArrayList<>( 7 ) ;  // Set initial capacity to 7, for the seven days of the week.
dows.add( firstDayOfWeek ) ;

➥ 要将一周中的其他六天添加到该列表中,最简单/最短/最优雅的方法是什么?

【问题讨论】:

    标签: java dayofweek java-time


    【解决方案1】:

    您可以使用DayOfWeekplus 方法。

    计算从周日到周一在一周结束时滚动。

    使用IntStream 及其range 方法增加数字(包含开始,不包含结束)。

    Locale locale = Locale.CANADA_FRENCH;
    DayOfWeek firstDayOfWeek = WeekFields.of(locale).getFirstDayOfWeek();
    
    List<DayOfWeek> dows = IntStream.range(0, 7)
            .mapToObj(firstDayOfWeek::plus)
            .collect(Collectors.toList());
    

    【讨论】:

    • 完美。我从来没有注意到这种方法。这在for ( int i = 0 ; i &lt; 7 ; i++ ) 循环中击败了( ( firstDayOfWeek.getValue() + i - 1 ) % 7 + 1 )
    猜你喜欢
    • 2011-09-05
    • 2011-07-29
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多