Java8新特性-016-时间矫正器

xiaoxiao2021-02-28  12

日期的操纵

TemporalAdjuster : 时间校正器。有时我们可能需要获取例如:将日期调整到“下个周日”等操作。TemporalAdjusters : 该类通过静态方法提供了大量的常用TemporalAdjuster 的实现。

测试代码

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 */ }


其它

源码下载 关注下方公众号,回复:Java8.code

欢迎加入交流群:451826376

更多信息:www.itcourse.top

转载请注明原文地址: https://www.6miu.com/read-1749979.html

最新回复(0)