记一下
/**
* 获取两个时间的相差天数
*
* @param begin 开始时间
* @param end 结束时间
* @return Long
*/
public static Long getBetweenDays(Temporal begin, Temporal end) {
return Math.abs(ChronoUnit.DAYS.between(begin, end));
}
/**
* 计算两日期相差的周数 (日历逻辑)
*
* @param begin 开始时间
* @param end 结束时间
* @return Integer
*/
public static Long getBetweenWeeks(Temporal begin, Temporal end) {
if (end.getLong(ChronoField.EPOCH_DAY) - begin.getLong(ChronoField.EPOCH_DAY) < 0) {
Temporal temp = begin;
begin = end;
end = temp;
}
int beginWeekDay = begin.get(ChronoField.DAY_OF_WEEK);
long daysBetween = getBetweenDays(begin, end);
long weeksBetween = daysBetween / 7;
int offset = (daysBetween % 7 + beginWeekDay) > 7 ? 1 : 0;
return offset + weeksBetween;
}