专业的JAVA编程教程与资源

网站首页 > java教程 正文

DATE #4、Java操作日期时间-④.自定义时间调节器-放假通知

temp10 2024-10-28 19:34:11 java教程 7 ℃ 0 评论

2.5.时间调节器 TemporalAdjuster

时间调节器设计思想,就是输入一个日期,根据定义规则,返回一个符合规则的日期,

@FunctionalInterface
public interface TemporalAdjuster {
   //接受一个Temporal类型的对象,(所有的日期对象都实现了该接口)
   //意思接受一个日期对象,按规则修改后返回另一个日期对象
   Temporal adjustInto(Temporal temporal);
}

比如修改当月时间为本月一号:

DATE #4、Java操作日期时间-④.自定义时间调节器-放假通知

LocalDate localDate = LocalDate.now();
//修改为本月一号
LocalDate modifyDate = localDate.with(TemporalAdjusters.firstDayOfMonth());
log.debug("修改本月一号:{}",modifyDate);

设计一个劳动节放假通知的自定义时间调节器:

/**
 * @version 1.0.0
 * @RESTful:Create-post Read-get update-put/path delete-delete
 * @package: com.devzl.poi.word.date.java.time
 * @ClassName: DragonBoat.java
 * @author: L.Z QQ.191288065@qq.com
 * @Description 劳动节放假时间每年的五月一日是国际劳动节
 *   调整:
 *    1.如果放假时间不是周五,则时间调整到上一个周五开始放假
 * @createTime 2021年06月17日 00:12:00
 */
public class LaborDayAdjuster implements TemporalAdjuster {
    @Override
    public Temporal adjustInto(Temporal temporal) {
        //1.Temporal是所有日期的父接口,则可以转换为LocalDate日期对象
        LocalDate localDate = LocalDate.from(temporal);
        //判断当前日期对象是否1号,不是,则修改日期
        int currentDay = localDate.getDayOfMonth();
        LocalDate realHoliday = localDate;
        if(currentDay != 1){
            realHoliday = localDate.withDayOfMonth(1);
        }
        //不是周五,那么放假日修改为上一周的周五
        if(!realHoliday.getDayOfWeek().equals(DayOfWeek.FRIDAY)){
            return realHoliday.with(TemporalAdjusters.previous(DayOfWeek.FRIDAY));
        } else {
            return realHoliday;
        }
    }
}

测试使用:

@Test
public void test_TemporalAdjuster() {
    //1.封装劳动节日:5.1
    LocalDate laborDay = LocalDate.of(2021, 5, 1);
    //2.计算正确的放假日
    LocalDate realHoliday = LocalDate.from(new LaborDayAdjuster().adjustInto(laborDay));
    log.debug("2021年劳动节放假通知:与{}开始放假,{}开始上班",realHoliday,realHoliday.plusDays(3));
}
//00:50:46.438 [main] - 2021年放假通知:与2021-04-30开始放假,2021-05-03开始上班

这样就达到我们的调休放假的目标:2021年放假通知:与2021-04-30开始放假,2021-05-03开始上班

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

欢迎 发表评论:

最近发表
标签列表