diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/LocalDateTimeUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/LocalDateTimeUtils.java index cf978d81a..2648c88de 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/LocalDateTimeUtils.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/LocalDateTimeUtils.java @@ -249,8 +249,11 @@ public class LocalDateTimeUtils { break; case DateIntervalEnum.QUARTER: while (startTime.isBefore(endTime)) { - LocalDateTime quarterEnd = startTime.withMonth(getQuarterOfYear(startTime) * 3 + 1) - .withDayOfMonth(1).minusNanos(1); + int quarterOfYear = getQuarterOfYear(startTime); + LocalDateTime quarterEnd = + quarterOfYear == 4 + ? startTime.with(TemporalAdjusters.lastDayOfYear()).plusDays(1).minusNanos(1) + : startTime.withMonth(quarterOfYear * 3 + 1).withDayOfMonth(1).minusNanos(1); timeRanges.add(new LocalDateTime[]{startTime, quarterEnd}); startTime = quarterEnd.plusNanos(1); }