fix Date and aopbug

This commit is contained in:
Looly
2020-03-26 12:05:26 +08:00
parent 8c9abbe3e3
commit 8bb73f3829
5 changed files with 54 additions and 21 deletions

View File

@@ -1551,6 +1551,22 @@ public class DateUtil {
return between(beginDate, endDate, DateUnit.DAY);
}
/**
* 计算指定指定时间区间内的周数
*
* @param beginDate 开始时间
* @param endDate 结束时间
* @param isReset 是否重置时间为起始时间
* @return 周数
*/
public static long betweenWeek(Date beginDate, Date endDate, boolean isReset) {
if (isReset) {
beginDate = beginOfDay(beginDate);
endDate = beginOfDay(endDate);
}
return between(beginDate, endDate, DateUnit.WEEK);
}
/**
* 计算两个日期相差月数<br>
* 在非重置情况下如果起始日期的天小于结束日期的天月数要少算1不足1个月
@@ -1723,23 +1739,11 @@ public class DateUtil {
* @param start 开始时间
* @param end 结束时间
* @return 周数
* @deprecated 请使用 {@link #betweenWeek(Date, Date, boolean)}
*/
@Deprecated
public static int weekCount(Date start, Date end) {
final Calendar startCalendar = Calendar.getInstance();
startCalendar.setTime(start);
final Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(end);
final int startWeekofYear = startCalendar.get(Calendar.WEEK_OF_YEAR);
final int endWeekofYear = endCalendar.get(Calendar.WEEK_OF_YEAR);
int count = endWeekofYear - startWeekofYear + 1;
if (Calendar.SUNDAY != startCalendar.get(Calendar.DAY_OF_WEEK)) {
count--;
}
return count;
return (int) betweenWeek(start, end, true);
}
/**

View File

@@ -719,4 +719,13 @@ public class DateUtilTest {
final LocalDateTime localDateTime = DateUtil.parseLocalDateTime(strDate, "yyyy-MM-dd");
Assert.assertEquals(strDate, DateUtil.format(localDateTime, DatePattern.NORM_DATE_PATTERN));
}
@Test
public void betweenWeekTest() {
final DateTime start = DateUtil.parse("2019-03-05");
final DateTime end = DateUtil.parse("2019-10-05");
final long weekCount = DateUtil.betweenWeek(start, end, true);
Assert.assertEquals(30L, weekCount);
}
}