From a1473a9f9fe53ecbcecfe37a7c2e1bcaf05a6c1c Mon Sep 17 00:00:00 2001 From: doufenghu Date: Sat, 6 Jun 2020 21:30:07 +0800 Subject: fix(DateUtils):修复floor 策略为0异常 day、month 问题; 后续需要统一起始时间段解决PND/PNM 问题 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/zdjizhi/utils/DateUtils.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/zdjizhi/utils/DateUtils.java b/src/main/java/com/zdjizhi/utils/DateUtils.java index 56fbed0..1c7a5d7 100644 --- a/src/main/java/com/zdjizhi/utils/DateUtils.java +++ b/src/main/java/com/zdjizhi/utils/DateUtils.java @@ -655,10 +655,12 @@ public class DateUtils implements TimeConstants { final int months = period.getMonths(); if (months > 0) { + int m = dateTime.getMonthOfYear(); - m -= m % months; + if (m % months != m) { + m -= m % months; + } dateTime = dateTime.withMonthOfYear(m).withDayOfMonth(1).withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0).withMillisOfSecond(0); - return dateTime.toDate(); } @@ -666,7 +668,10 @@ public class DateUtils implements TimeConstants { final int weeks = period.getWeeks(); if (weeks > 0) { int w = dateTime.getWeekOfWeekyear(); - w -= w % weeks; + + if (w % weeks != w) { + w -= w % weeks; + } dateTime = dateTime.withWeekOfWeekyear(w).withDayOfWeek(1).withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0).withMillisOfSecond(0); return dateTime.toDate(); @@ -677,7 +682,10 @@ public class DateUtils implements TimeConstants { final int days = period.getDays(); if (days > 0) { int d = dateTime.getDayOfMonth(); - d -= d % days; + if (d % days != d) { + d -= d % days; + } + dateTime = dateTime.withDayOfMonth(d).withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0).withMillisOfSecond(0); return dateTime.toDate(); } @@ -686,7 +694,7 @@ public class DateUtils implements TimeConstants { final int hours = period.getHours(); if (hours > 0) { int h = dateTime.getHourOfDay(); - h -= h % hours; + h -= h % hours; dateTime = dateTime.withHourOfDay(h).withMinuteOfHour(0).withSecondOfMinute(0).withMillisOfSecond(0); return dateTime.toDate(); } -- cgit v1.2.3