java 自定义日期_java 8 自定义日期获取

导述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值