Class Calculate

Direct Known Subclasses:
Calendar

public class Calculate extends Resolver
日期计算类
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • Calculate

      public Calculate()
  • Method Details

    • isIn

      public static boolean isIn(TemporalAccessor date, TemporalAccessor beginDate, TemporalAccessor endDate)
      当前日期是否在日期指定范围内 起始日期和结束日期可以互换
      Parameters:
      date - 被检查的日期
      beginDate - 起始日期(包含)
      endDate - 结束日期(包含)
      Returns:
      是否在范围内
    • isIn

      public static boolean isIn(TemporalAccessor date, TemporalAccessor beginDate, TemporalAccessor endDate, boolean includeBegin, boolean includeEnd)
      当前日期是否在日期指定范围内 起始日期和结束日期可以互换 通过includeBegin, includeEnd参数控制日期范围区间是否为开区间,例如:传入参数:includeBegin=true, includeEnd=false, 则本方法会判断 date ∈ (beginDate, endDate] 是否成立
      Parameters:
      date - 被检查的日期
      beginDate - 起始日期
      endDate - 结束日期
      includeBegin - 时间范围是否包含起始日期
      includeEnd - 时间范围是否包含结束日期
      Returns:
      是否在范围内
    • isOverlap

      public static boolean isOverlap(ChronoLocalDateTime<?> realStartTime, ChronoLocalDateTime<?> realEndTime, ChronoLocalDateTime<?> startTime, ChronoLocalDateTime<?> endTime)
      检查两个时间段是否有时间重叠 重叠指两个时间段是否有交集,注意此方法时间段重合时如:
      • 此方法未纠正开始时间小于结束时间
      • 当realStartTime和realEndTime或startTime和endTime相等时,退化为判断区间是否包含点
      • 当realStartTime和realEndTime和startTime和endTime相等时,退化为判断点与点是否相等
      See 准确的区间关系参考:艾伦区间代数
      Parameters:
      realStartTime - 第一个时间段的开始时间
      realEndTime - 第一个时间段的结束时间
      startTime - 第二个时间段的开始时间
      endTime - 第二个时间段的结束时间
      Returns:
      true 表示时间有重合
    • isSameDay

      public static boolean isSameDay(ChronoLocalDateTime<?> date1, ChronoLocalDateTime<?> date2)
      比较两个日期是否为同一天
      Parameters:
      date1 - 日期1
      date2 - 日期2
      Returns:
      是否为同一天
    • isSameDay

      public static boolean isSameDay(ChronoLocalDate date1, ChronoLocalDate date2)
      比较两个日期是否为同一天
      Parameters:
      date1 - 日期1
      date2 - 日期2
      Returns:
      是否为同一天
    • isWeekend

      public static boolean isWeekend(LocalDateTime localDateTime)
      是否为周末(周六或周日)
      Parameters:
      localDateTime - 判定的日期LocalDateTime
      Returns:
      是否为周末(周六或周日)
    • isWeekend

      public static boolean isWeekend(LocalDate localDate)
      是否为周末(周六或周日)
      Parameters:
      localDate - 判定的日期LocalDate
      Returns:
      是否为周末(周六或周日)
    • isLeapYear

      public static boolean isLeapYear(int year)
      是否闰年
      Returns:
      是否闰年
    • offset

      public static LocalDateTime offset(LocalDateTime time, long number, TemporalUnit field)
      日期偏移,根据field不同加不同值(偏移会修改传入的对象)
      Parameters:
      time - LocalDateTime
      number - 偏移量,正数为向后偏移,负数为向前偏移
      field - 偏移单位,见ChronoUnit,不能为null
      Returns:
      偏移后的日期时间
    • offset

      public static <T extends Temporal> T offset(T time, long number, TemporalUnit field)
      日期偏移,根据field不同加不同值(偏移会修改传入的对象)
      Type Parameters:
      T - 日期类型,如LocalDate或LocalDateTime
      Parameters:
      time - Temporal
      number - 偏移量,正数为向后偏移,负数为向前偏移
      field - 偏移单位,见ChronoUnit,不能为null
      Returns:
      偏移后的日期时间
    • beginOfDay

      public static LocalDateTime beginOfDay(LocalDateTime time)
      修改为一天的开始时间,例如:2020-02-02 00:00:00,000
      Parameters:
      time - 日期时间
      Returns:
      一天的开始时间
    • beginOfDay

      public static LocalDateTime beginOfDay(LocalDate date)
      修改为一天的开始时间,例如:2020-02-02 00:00:00,000
      Parameters:
      date - 日期
      Returns:
      一天的开始时间
    • endOfDay

      public static LocalDateTime endOfDay(LocalDateTime time, boolean truncateMillisecond)
      修改为一天的结束时间
      • 毫秒不归零:2020-02-02 23:59:59,999
      • 毫秒归零:2020-02-02 23:59:59,000
      Parameters:
      time - 日期时间
      truncateMillisecond - 是否毫秒归零
      Returns:
      一天的结束时间
    • endOfDay

      public static LocalDateTime endOfDay(LocalDate date, boolean truncateMillisecond)
      修改为一天的结束时间
      • 毫秒不归零:2024-05-01 23:59:59,999
      • 毫秒归零:2024-05-01 23:59:59,000
      Parameters:
      date - 日期
      truncateMillisecond - 是否毫秒归零
      Returns:
      一天的结束时间
    • beginOfMonth

      public static LocalDateTime beginOfMonth(LocalDateTime time)
      修改为月初的开始时间,例如:2024-05-01 00:00:00,000
      Parameters:
      time - 日期时间
      Returns:
      月初的开始时间
    • beginOfMonth

      public static LocalDate beginOfMonth(LocalDate date)
      修改为月初的开始时间,例如:2024-05-01 00:00:00,000
      Parameters:
      date - 日期
      Returns:
      月初的开始时间
    • endOfMonth

      public static LocalDateTime endOfMonth(LocalDateTime time, boolean truncateMillisecond)
      修改为月底的结束时间
      Parameters:
      time - 日期时间
      truncateMillisecond - 是否毫秒归零
      Returns:
      月底的结束时间
    • endOfMonth

      public static LocalDate endOfMonth(LocalDate date)
      修改为月底的结束时间
      Parameters:
      date - 日期
      Returns:
      月底的结束时间
    • beginOfYear

      public static LocalDateTime beginOfYear(LocalDateTime time)
      修改为一年的开始时间,例如:2024-05-01 00:00:00,000
      Parameters:
      time - 日期时间
      Returns:
      一年的开始时间
    • beginOfYear

      public static LocalDate beginOfYear(LocalDate date)
      修改为一年的开始时间,例如:2024-05-01 00:00:00,000
      Parameters:
      date - 日期
      Returns:
      一年的开始时间
    • endOfYear

      public static LocalDateTime endOfYear(LocalDateTime time, boolean truncateMillisecond)
      修改为一年的结束时间
      Parameters:
      time - 日期时间
      truncateMillisecond - 是否毫秒归零
      Returns:
      一年的结束时间
    • endOfYear

      public static LocalDate endOfYear(LocalDate date)
      修改为一年的结束时间
      Parameters:
      date - 日期
      Returns:
      一年的结束时间
    • dayOfWeek

      public static Week dayOfWeek(LocalDate localDate)
      获取LocalDate对应的星期值
      Parameters:
      localDate - 日期LocalDate
      Returns:
      Week
    • weekOfYear

      public static int weekOfYear(TemporalAccessor date)
      获得指定日期是所在年份的第几周,如:
      • 如果一年的第一天是星期一,则第一周从第一天开始,没有零周
      • 如果一年的第二天是星期一,则第一周从第二天开始,而第一天在零周
      • 如果一年的第4天是星期一,则第一周从第4天开始,第1至第3天在零周
      • 如果一年的第5天是星期一,则第二周从第5天开始,第1至第4天在第一周
      Parameters:
      date - 日期(LocalDate 或者 LocalDateTime等)
      Returns:
      所在年的第几周
    • max

      public static LocalTime max(boolean truncateMillisecond)
      获取最大时间,提供参数是否将毫秒归零
      • 如果truncateMillisecondfalse,返回时间最大值,为:23:59:59,999
      • 如果truncateMillisecondtrue,返回时间最大值,为:23:59:59,000
      Parameters:
      truncateMillisecond - 是否毫秒归零
      Returns:
      LocalTime时间最大值
    • offset

      public <T extends Temporal> T offset(T temporal, DayOfWeek dayOfWeek, boolean isPrevious)
      偏移到指定的周几
      Type Parameters:
      T - 日期类型,如LocalDate或LocalDateTime
      Parameters:
      temporal - 日期或者日期时间
      dayOfWeek - 周几
      isPrevious - 是否向前偏移,true向前偏移,false向后偏移。
      Returns:
      偏移后的日期