【问题标题】:how to set a weekday using java8如何使用java8设置工作日
【发布时间】:2016-06-14 14:28:34
【问题描述】:

我有以下设置工作日的 Joda-Time 代码:

LocalDateTime localDateTime = new LocalDateTime(2016, 1, 1, 20,39);
LocalDateTime localDateTime1 = localDateTime.withDayOfWeek(7); 

我怎样才能对java.time 做同样的事情?我看到没有setDayOfTheWeek

LocalDateTime time;
time.getDayOfWeek()

【问题讨论】:

    标签: java datetime time java-time


    【解决方案1】:

    使用time.with(TemporalAdjuster),指定DayOfWeek的实例,例如

    LocalDateTime time1 = time.with(DayOfWeek.FRIDAY);
    

    【讨论】:

      【解决方案2】:

      它没有setDayOfTheWeek,因为LocalDateTime 是不可变的,所以它没有设置器来修改对象。 (Joda Time 类也是不可变的!)。

      在 Java 8 中使用它:

      LocalDateTime localDateTime = LocalDateTime.of(2016, 1, 1, 20,39);
      LocalDateTime localDateTime1 = localDateTime.with(DayOfWeek.SUNDAY);
      

      【讨论】:

        【解决方案3】:

        你有几种方法可以做到:

        LocalDateTime localDateTime = LocalDateTime.of(2016, 1, 1, 20, 39);
        
        LocalDateTime ldt1 = localDateTime.with(ChronoField.DAY_OF_WEEK, 7);
        LocalDateTime ldt2 = localDateTime.with(DayOfWeek.of(7));
        //Or, more readable, as suggested by @AndyTurner
        LocalDateTime ldt3 = localDateTime.with(DayOfWeek.SUNDAY);
        

        【讨论】:

          【解决方案4】:

          java.time API 没有withDayOfWeek(DayOfWeek) 方法。但是它确实有一个通用的with(TemporalAccessor) 方法可以用来代替:

          LocalDateTime dt = base.with(DayOfWeek.WEDNESDAY);
          

          但是,这留下了选择哪个星期三的问题(它实际上会在星期一到星期日的一周内更改日期)。更好的方法是使用TemporalAdjuster 使其更明确:

          import static java.time.DayOfWeek.WEDNESDAY;
          import static java.time.temporal.TemporalAdjusters.next;
          
          LocalDateTime dt = base.with(next(WEDNESDAY));
          

          这会将日期更改为基准日期之后的下一个星期三。请参阅TemporalAdjusters 了解可用选项:

          • next(DayOfWeek)
          • nextOrSame(DayOfWeek)
          • previous(DayOfWeek)
          • previousOrSame(DayOfWeek)
          • firstInMonth(DayOfWeek)
          • lastInMonth(DayOfWeek)
          • dayOfWeekInMonth(int, DayOfWeek)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-03
            • 2012-01-14
            • 2014-12-16
            • 1970-01-01
            • 1970-01-01
            • 2018-11-02
            相关资源
            最近更新 更多