导述
Java 8 中引入了新的日期处理包 java.time. 日期相关:LocalDate 时间:LocalDateTime 时间戳:Instant 持续时间:Duration 时区控制:ZonedDateTime
这几个类以及可以实现所有日期相关的操作,而且还可以进行自定义操作。比如现在需要计算下个工作日的时间,应该如何进行处理呢?
日期类
在Java 8 中处理日期相关计算,使用LocalDate类。查看已有的实现是否满足需要呢?
LocalDate.now().with(TemporalAdjusters)
默认提供的实现方式中,不存在类似函数。但通过上图可以看出 ofDateAdjuster(UnaryOperator dateBasedAdjuster)其注释:Obtains a {@code TemporalAdjuster} that wraps a date adjuster(日期的调节器)
实现
DayOfWeek是一个枚举类,也是Java 8 新添加的类型。
通过上图中提供的函数类型:TemporalAdjusters.ofDateAdjuster()自定义实现
TemporalAdjuster nextWorkingDay = TemporalAdjusters.ofDateAdjuster(
temporal -> {
DayOfWeek dow =
DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));
int dayToAdd = 1;
if (dow ==DayOfWeek.FRIDAY){
dayToAdd = 3;
}
if (dow ==DayOfWeek.SATURDAY){
dayToAdd = 2;
}
return temporal.plus(dayToAdd, ChronoUnit.DAYS);
});
//测试
LocalDate localDate = LocalDate.now().with(nextWorkingDay);
总结
由于Java8 中引入函数式编程,编程风格趋于简单化。新的日期处理方式拥有众多优良特性。建议尽快切换到新的日期处理。