零基础java自学流程-Java语言进阶90

559 篇文章 0 订阅
546 篇文章 0 订阅

想要系统学习JAVA               推荐JAVA300集
Java300集零基础适合初学者视频教程←点击


练习:使用TemporalAdjusters

//示例
//将当前时间改为下一个周日
LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
//将当前时间该上一个周三
LocalDate.now().with(TemporalAdjusters.previous(DayOfWeek.WEDNESDAY));

自定义 TemporalAdjuster 调节器

通过Java8本身提供的TemporalAdjusters中的方法可以完成一些常用的操作,如果要自定义日期时间的更改逻辑,可以通过实现TemporalAdjuster类接口中的方式来完成.
。创建类实现TemporalAdjuster接口
。实现TemporalAdjuster中的adjustInto方法,传入一个日期时间对象,完成逻辑之后返回日期时间对象。
。通过with方法传入自定义调节器对象完成更改.

练习:使用自定义TemporalAdjuster

//假如员工一个月中领取工资,发薪日是每月15号,如果发薪日时周末,则调整为周五。
 LocalDate date = LocalDate.of(2021,5,15).with(d->{
            LocalDate readyDay = LocalDate.from(d);
            readyDay = readyDay.withDayOfMonth(15);
            if(readyDay.getDayOfWeek()== DayOfWeek.SUNDAY||readyDay.getDayOfWeek()==DayOfWeek.SATURDAY){
                readyDay = readyDay.with(TemporalAdjusters.previous(DayOfWeek.FRIDAY));
            }
            return readyDay;
        });

TemporalQuery的应用

学习的时态类对象 (Loca,Date,LocalTime) 都有一个方法叫做 query,可以针对日期进行查询 R query(TemporalQuery query) 这个方法是一个泛型方法,返回的数据就是传入的泛型类的类型,TemporalQuery 是一个泛型接口,里面有一个抽象方法是R queryFrom(TemporalAccessor temporal), TemporalAccessor 是 Temporal 的父接口,实际上也就是 LocalDate、LocalDateTime 相关类的顶级父接口,这个 queryFrom 的方法的实现逻辑就是,传入一个日期/时间对象通过自定义逻辑返回数据。

如果要计划日期距离某一个特定天数差距多少天,可以自定义类实现TemporalQuery接口并且作为参数传入到query方法中.

练习:计算当前时间距离下一个劳动节还有多少天?

//示例
//计算当前时间距离下一个劳动节还有多少天?
Long  days = LocalDate.of(2021,4,1).query(d->{
            //1.TemporalAccessor是LocalDate和LocalDateTime的顶级父接口,相当于LocalDate就是这个接口的实现类,将temporal转换为LocalDate进行使用.
            LocalDate now = LocalDate.from(d); //now -> 2020 - 1 - 17
            //2.封装当年的劳动节时间,年份: now来获取,月份:Month.MAY,日期:1.
            LocalDate laborDay = LocalDate.of(now.getYear(), Month.MAY,1);//laborDay -> 2020 - 5

            //2.1.判断当前时间是否已经超过了当年的劳动节,如果超过了当年的劳动节,则laborDay+1年.
            if (now.isAfter(laborDay)) {
                laborDay = laborDay.plusYears(1);
            }

            //3.通过Chronounit的between方法来计算两个时间点的差额.
            return ChronoUnit.DAYS.between( now,laborDay);

想要系统学习JAVA               推荐JAVA300集
Java300集零基础适合初学者视频教程←点击

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值