``
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;
import java.text.SimpleDateFormat;
public class DateUtils{
public static long monthsBetween(LocalDate start, LocalDate end) {
long months = ChronoUnit.MONTHS.between(start, end);
return months;
}
public static boolean isWholeMonthBetween(Date start, Date end) {
if (start == null || end == null) {
return false;
}
if (start.getTime() == end.getTime()){
return true;
}
if (end.getTime() < start.getTime()) {
Date tempDate = start;
start = end;
end = tempDate;
}
LocalDate date1 = start.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate date2 = end.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
Long months = monthsBetween(date1, date2);
System.out.println(months);
Calendar cal1 = Calendar.getInstance();
cal1.setTime(getDateOnlyYMD(start));
Calendar cal2 = Calendar.getInstance();
cal2.setTime(getDateOnlyYMD(end));
//此处用-法才测试正常 + 平年闰年问题 其他方法欢迎修正,
cal2.add(Calendar.MONTH,0-months.intValue());
return cal2.getTimeInMillis() == cal1.getTimeInMillis();
}
/**
* 获得给定时间的去掉时分秒信息数据
*/
public static Date getDateOnlyYMD(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 将时分秒,毫秒域清零
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
}
判断两个日期是否相差了整月份的java代码,java 8以上版本。欢迎指正。