TestTimeAdjuster.java
package java8.adjuster; import java.time.DayOfWeek; import java.time.LocalDateTime; import java.time.temporal.Temporal; import java.time.temporal.TemporalAdjusters; import org.junit.Test; public class TestTimeAdjuster { /* * TemporalAdjuster: 时间校正器,这是个接口。 * TemporalAdjusters:时间矫正器的一个工具类,提供了一些对TemporalAdjuster接口的具体实现类。 * * 使用步骤: * 1.调用LocalDateTime的with方法。 * 2.在with方法中传入TemporalAdjuster */ // 使用TemporalAdjusters工具类。 @Test public void test1() { LocalDateTime ldt1 = LocalDateTime.now(); System.out.println("现在是:" + ldt1); LocalDateTime ldt2 = ldt1.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)); System.out.println("下一个周日是:" + ldt2); } /* * 结果: * 现在是:2018-01-21T13:52:26.299 * 下一个周日是:2018-01-28T13:52:26.299 */ // 自定义TemporalAdjuster @Test public void test2() { /* * TemporalAdjuster是一个函数式接口: * Temporal adjustInto(Temporal temporal); * 其中参数是Temporal,使用LocalDateTime需要进行强转。 * 返回值也是一个Temporal,它是LocalDateTime的父接口。 */ // 下周一的LocalDateTime LocalDateTime ldt1 = LocalDateTime.now(); LocalDateTime ldt3 = ldt1.with((e) -> { // 强转 LocalDateTime ldt2 = (LocalDateTime) e; DayOfWeek dayOfWeek = ldt2.getDayOfWeek(); int compareTo = 0; if(dayOfWeek.equals(DayOfWeek.MONDAY)) { compareTo = 7; } else if(dayOfWeek.equals(DayOfWeek.TUESDAY)) { compareTo = 6; } else if(dayOfWeek.equals(DayOfWeek.WEDNESDAY)) { compareTo = 5; } else if(dayOfWeek.equals(DayOfWeek.THURSDAY)) { compareTo = 4; } else if(dayOfWeek.equals(DayOfWeek.FRIDAY)) { compareTo = 3; } else if(dayOfWeek.equals(DayOfWeek.SATURDAY)) { compareTo = 2; } else if(dayOfWeek.equals(DayOfWeek.SUNDAY)) { compareTo = 1; } return ldt2.plusDays(compareTo); }); System.out.println("下个周一是:" + ldt3); } /* * 结果: * 下个周一是:2018-01-22T13:48:54.285 */ }欢迎加入交流群:451826376
更多信息:www.itcourse.top