Package org.miaixz.bus.core.center.date
Class Calculate
java.lang.Object
org.miaixz.bus.core.center.date.Formatter
org.miaixz.bus.core.center.date.Converter
org.miaixz.bus.core.center.date.Resolver
org.miaixz.bus.core.center.date.Calculate
- Direct Known Subclasses:
Calendar
日期计算类
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
Fields inherited from class org.miaixz.bus.core.center.date.Formatter
CN_DATE_FORMAT, CN_DATE_FORMATTER, CN_DATE_TIME_FORMAT, CN_DATE_TIME_FORMATTER, CN_MONTH_FORMAT, CN_MONTH_FORMATTER, HTTP_DATETIME_FORMAT, HTTP_DATETIME_FORMAT_GMT, ISO8601_FORMAT, ISO8601_MS_FORMAT, ISO8601_MS_WITH_XXX_OFFSET_FORMAT, ISO8601_MS_WITH_ZONE_OFFSET_FORMAT, ISO8601_WITH_XXX_OFFSET_FORMAT, ISO8601_WITH_ZONE_OFFSET_FORMAT, JDK_DATETIME_FORMAT, MAX_HMS, NORM_DATE_FORMAT, NORM_DATE_FORMATTER, NORM_DATETIME_COMMA_MS_FORMAT, NORM_DATETIME_COMMA_MS_FORMATTER, NORM_DATETIME_FORMAT, NORM_DATETIME_FORMATTER, NORM_DATETIME_MINUTE_FORMAT, NORM_DATETIME_MINUTE_FORMATTER, NORM_DATETIME_MS_FORMAT, NORM_DATETIME_MS_FORMATTER, NORM_HOUR_MINUTE_FORMAT, NORM_HOUR_MINUTE_FORMATTER, NORM_MONTH_FORMAT, NORM_MONTH_FORMATTER, NORM_TIME_FORMAT, NORM_TIME_FORMATTER, PPURE_HOUR_MINUTE_FORMAT, PURE_DATE_FORMAT, PURE_DATE_FORMATTER, PURE_DATETIME_FORMAT, PURE_DATETIME_FORMATTER, PURE_DATETIME_MS_FORMAT, PURE_DATETIME_MS_FORMATTER, PURE_DATETIME_TIP_FORMAT, PURE_HOUR_MINUTE_FORMATTER, PURE_TIME_FORMAT, PURE_TIME_FORMATTER, SIMPLE_MONTH_FORMAT, SIMPLE_MONTH_FORMATTER, UTC_FORMAT, UTC_MS_FORMAT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic LocalDateTimebeginOfDay(LocalDate date) 修改为一天的开始时间,例如:2020-02-02 00:00:00,000static LocalDateTimebeginOfDay(LocalDateTime time) 修改为一天的开始时间,例如:2020-02-02 00:00:00,000static LocalDatebeginOfMonth(LocalDate date) 修改为月初的开始时间,例如:2024-05-01 00:00:00,000static LocalDateTimebeginOfMonth(LocalDateTime time) 修改为月初的开始时间,例如:2024-05-01 00:00:00,000static LocalDatebeginOfYear(LocalDate date) 修改为一年的开始时间,例如:2024-05-01 00:00:00,000static LocalDateTimebeginOfYear(LocalDateTime time) 修改为一年的开始时间,例如:2024-05-01 00:00:00,000static Week获取LocalDate对应的星期值static LocalDateTime修改为一天的结束时间 毫秒不归零:2024-05-01 23:59:59,999 毫秒归零:2024-05-01 23:59:59,000static LocalDateTimeendOfDay(LocalDateTime time, boolean truncateMillisecond) 修改为一天的结束时间 毫秒不归零:2020-02-02 23:59:59,999 毫秒归零:2020-02-02 23:59:59,000static LocalDateendOfMonth(LocalDate date) 修改为月底的结束时间static LocalDateTimeendOfMonth(LocalDateTime time, boolean truncateMillisecond) 修改为月底的结束时间static LocalDate修改为一年的结束时间static LocalDateTimeendOfYear(LocalDateTime time, boolean truncateMillisecond) 修改为一年的结束时间static booleanisIn(TemporalAccessor date, TemporalAccessor beginDate, TemporalAccessor endDate) 当前日期是否在日期指定范围内 起始日期和结束日期可以互换static booleanisIn(TemporalAccessor date, TemporalAccessor beginDate, TemporalAccessor endDate, boolean includeBegin, boolean includeEnd) 当前日期是否在日期指定范围内 起始日期和结束日期可以互换 通过includeBegin, includeEnd参数控制日期范围区间是否为开区间,例如:传入参数:includeBegin=true, includeEnd=false, 则本方法会判断 date ∈ (beginDate, endDate] 是否成立static booleanisLeapYear(int year) 是否闰年static booleanisOverlap(ChronoLocalDateTime<?> realStartTime, ChronoLocalDateTime<?> realEndTime, ChronoLocalDateTime<?> startTime, ChronoLocalDateTime<?> endTime) 检查两个时间段是否有时间重叠 重叠指两个时间段是否有交集,注意此方法时间段重合时如: 此方法未纠正开始时间小于结束时间 当realStartTime和realEndTime或startTime和endTime相等时,退化为判断区间是否包含点 当realStartTime和realEndTime和startTime和endTime相等时,退化为判断点与点是否相等 See 准确的区间关系参考:艾伦区间代数static booleanisSameDay(ChronoLocalDate date1, ChronoLocalDate date2) 比较两个日期是否为同一天static booleanisSameDay(ChronoLocalDateTime<?> date1, ChronoLocalDateTime<?> date2) 比较两个日期是否为同一天static boolean是否为周末(周六或周日)static booleanisWeekend(LocalDateTime localDateTime) 是否为周末(周六或周日)static LocalTimemax(boolean truncateMillisecond) 获取最大时间,提供参数是否将毫秒归零 如果truncateMillisecond为false,返回时间最大值,为:23:59:59,999 如果truncateMillisecond为true,返回时间最大值,为:23:59:59,000static LocalDateTimeoffset(LocalDateTime time, long number, TemporalUnit field) 日期偏移,根据field不同加不同值(偏移会修改传入的对象)static <T extends Temporal>
Toffset(T time, long number, TemporalUnit field) 日期偏移,根据field不同加不同值(偏移会修改传入的对象)<T extends Temporal>
T偏移到指定的周几static intweekOfYear(TemporalAccessor date) 获得指定日期是所在年份的第几周,如: 如果一年的第一天是星期一,则第一周从第一天开始,没有零周 如果一年的第二天是星期一,则第一周从第二天开始,而第一天在零周 如果一年的第4天是星期一,则第一周从第4天开始,第1至第3天在零周 如果一年的第5天是星期一,则第二周从第5天开始,第1至第4天在第一周Methods inherited from class org.miaixz.bus.core.center.date.Resolver
normalize, parse, parse, parse, parse, parse, parse, parse, parseDate, parseDate, parseDateByISO, parseTime, parseTime, parseTimeByISOMethods inherited from class org.miaixz.bus.core.center.date.Converter
date, date, get, of, of, of, of, of, of, ofDate, ofPattern, ofUTC, ofUTC, ofZoned, toChronoUnit, toEpochMilli, toInstant, toTimeUnit
-
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相等时,退化为判断点与点是否相等
- Parameters:
realStartTime- 第一个时间段的开始时间realEndTime- 第一个时间段的结束时间startTime- 第二个时间段的开始时间endTime- 第二个时间段的结束时间- Returns:
- true 表示时间有重合
-
isSameDay
比较两个日期是否为同一天- Parameters:
date1- 日期1date2- 日期2- Returns:
- 是否为同一天
-
isSameDay
比较两个日期是否为同一天- Parameters:
date1- 日期1date2- 日期2- Returns:
- 是否为同一天
-
isWeekend
是否为周末(周六或周日)- Parameters:
localDateTime- 判定的日期LocalDateTime- Returns:
- 是否为周末(周六或周日)
-
isWeekend
是否为周末(周六或周日)- Parameters:
localDate- 判定的日期LocalDate- Returns:
- 是否为周末(周六或周日)
-
isLeapYear
public static boolean isLeapYear(int year) 是否闰年- Returns:
- 是否闰年
-
offset
日期偏移,根据field不同加不同值(偏移会修改传入的对象)- Parameters:
time-LocalDateTimenumber- 偏移量,正数为向后偏移,负数为向前偏移field- 偏移单位,见ChronoUnit,不能为null- Returns:
- 偏移后的日期时间
-
offset
日期偏移,根据field不同加不同值(偏移会修改传入的对象)- Type Parameters:
T- 日期类型,如LocalDate或LocalDateTime- Parameters:
time-Temporalnumber- 偏移量,正数为向后偏移,负数为向前偏移field- 偏移单位,见ChronoUnit,不能为null- Returns:
- 偏移后的日期时间
-
beginOfDay
修改为一天的开始时间,例如:2020-02-02 00:00:00,000- Parameters:
time- 日期时间- Returns:
- 一天的开始时间
-
beginOfDay
修改为一天的开始时间,例如:2020-02-02 00:00:00,000- Parameters:
date- 日期- Returns:
- 一天的开始时间
-
endOfDay
修改为一天的结束时间- 毫秒不归零:2020-02-02 23:59:59,999
- 毫秒归零:2020-02-02 23:59:59,000
- Parameters:
time- 日期时间truncateMillisecond- 是否毫秒归零- Returns:
- 一天的结束时间
-
endOfDay
修改为一天的结束时间- 毫秒不归零:2024-05-01 23:59:59,999
- 毫秒归零:2024-05-01 23:59:59,000
- Parameters:
date- 日期truncateMillisecond- 是否毫秒归零- Returns:
- 一天的结束时间
-
beginOfMonth
修改为月初的开始时间,例如:2024-05-01 00:00:00,000- Parameters:
time- 日期时间- Returns:
- 月初的开始时间
-
beginOfMonth
修改为月初的开始时间,例如:2024-05-01 00:00:00,000- Parameters:
date- 日期- Returns:
- 月初的开始时间
-
endOfMonth
修改为月底的结束时间- Parameters:
time- 日期时间truncateMillisecond- 是否毫秒归零- Returns:
- 月底的结束时间
-
endOfMonth
修改为月底的结束时间- Parameters:
date- 日期- Returns:
- 月底的结束时间
-
beginOfYear
修改为一年的开始时间,例如:2024-05-01 00:00:00,000- Parameters:
time- 日期时间- Returns:
- 一年的开始时间
-
beginOfYear
修改为一年的开始时间,例如:2024-05-01 00:00:00,000- Parameters:
date- 日期- Returns:
- 一年的开始时间
-
endOfYear
修改为一年的结束时间- Parameters:
time- 日期时间truncateMillisecond- 是否毫秒归零- Returns:
- 一年的结束时间
-
endOfYear
修改为一年的结束时间- Parameters:
date- 日期- Returns:
- 一年的结束时间
-
dayOfWeek
获取LocalDate对应的星期值 -
weekOfYear
获得指定日期是所在年份的第几周,如:- 如果一年的第一天是星期一,则第一周从第一天开始,没有零周
- 如果一年的第二天是星期一,则第一周从第二天开始,而第一天在零周
- 如果一年的第4天是星期一,则第一周从第4天开始,第1至第3天在零周
- 如果一年的第5天是星期一,则第二周从第5天开始,第1至第4天在第一周
- Parameters:
date- 日期(LocalDate或者LocalDateTime等)- Returns:
- 所在年的第几周
-
max
获取最大时间,提供参数是否将毫秒归零- 如果
truncateMillisecond为false,返回时间最大值,为:23:59:59,999 - 如果
truncateMillisecond为true,返回时间最大值,为:23:59:59,000
- Parameters:
truncateMillisecond- 是否毫秒归零- Returns:
LocalTime时间最大值
- 如果
-
offset
偏移到指定的周几- Type Parameters:
T- 日期类型,如LocalDate或LocalDateTime- Parameters:
temporal- 日期或者日期时间dayOfWeek- 周几isPrevious- 是否向前偏移,true向前偏移,false向后偏移。- Returns:
- 偏移后的日期
-