专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java 8 新日期API 计算下个工作日的方式如此简单

temp10 2024-11-09 13:48:55 java教程 9 ℃ 0 评论

导述

Java 8 中引入了新的日期处理包 java.time. 日期相关:LocalDate 时间:LocalDateTime 时间戳:Instant 持续时间:Duration 时区控制:ZonedDateTime

这几个类以及可以实现所有日期相关的操作,而且还可以进行自定义操作。比如现在需要计算下个工作日的时间,应该如何进行处理呢?

Java 8 新日期API 计算下个工作日的方式如此简单



日期类

在Java 8 中处理日期相关计算,使用LocalDate类。查看已有的实现是否满足需要呢?

LocalDate.now().with(TemporalAdjusters)


默认提供的实现方式中,不存在类似函数。但通过上图可以看出

ofDateAdjuster(UnaryOperator<LocalDate> dateBasedAdjuster)

其注释:Obtains a {@code TemporalAdjuster} that wraps a date adjuster(日期的调节器)


实现

DayOfWeek是一个枚举类,也是Java 8 新添加的类型。

通过上图中提供的函数类型:TemporalAdjusters.ofDateAdjust

er()自定义实现

 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 中引入函数式编程,编程风格趋于简单化。新的日期处理方式拥有众多优良特性。建议尽快切换到新的日期处理。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表