Browse Source

fix: LocalDateTimeUtils.getDateRangeList计算季度区间有误

dhb52 1 year ago
parent
commit
84140c52b0

+ 5 - 2
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);
                 }