网站首页 > 精选教程 正文
2.5.时间调节器 TemporalAdjuster
时间调节器设计思想,就是输入一个日期,根据定义规则,返回一个符合规则的日期,
@FunctionalInterface
public interface TemporalAdjuster {
//接受一个Temporal类型的对象,(所有的日期对象都实现了该接口)
//意思接受一个日期对象,按规则修改后返回另一个日期对象
Temporal adjustInto(Temporal temporal);
}
比如修改当月时间为本月一号:
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开始上班
猜你喜欢
- 2024-11-12 Java时间类介绍:Date的使用 java中datetime数据类型
- 2024-11-12 Java 阴历阳历转换 java转化日期格式
- 2024-11-12 Java 日期类型比较没有返回正确的结果
- 2024-11-12 如何将ABAP时间戳转换为JAVA时间戳,原理是什么呢?
- 2024-11-12 Java8 新特性:新日期与时间 java新时间类
- 2024-11-12 Java中有哪些可以用于日期和时间的API?
- 2024-11-12 Java常用日期操作类 java 日期处理类
- 2024-11-12 日期时间--JAVA成长之路 日期格式 java
- 2024-11-12 java8日期类型属性指定格式序列化配置优先级问题
- 2024-11-12 日期时间API之TemporalAdjusters与TemporalAdjuster
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)