/**
* 两个日期相差多少年多少天
* @param targetDate 目标日期 不能为null
* @param compareDate 比较日期 不能为null
* @return 相差年与天,返回绝对值或null,格式是28.096代表28年96天。
*/
public static Float age(LocalDate targetDate,LocalDate compareDate){
try {
if (compareDate == null) {
return null;
}
if (targetDate == null) {
return null;
}
int nyear = targetDate.getYear();
int nm = targetDate.getMonthValue();
int nd = targetDate.getDayOfMonth();
int byear = compareDate.getYear();
int bm = compareDate.getMonthValue();
int bd = compareDate.getDayOfMonth();
int year = nyear - byear;
/*
* 这段是处理两个日期相差多少年
* 1、当前年份减去出生年份,比较当前月份是否小于出生月份,如果小于的话相差年数需要减1
* 2、如果当前月份大于等于目标月份比较当月天,当前天数小于出生天相差年数减1
*/
if (nm < bm) {
year = year - 1;
} else if (nm == bm) {
if (nd < bd) {
year = year - 1;
}
}
compareDate = compareDate.plusYears(year);
float day = targetDate.toEpochDay() - compareDate.toEpochDay();
day = day / 1000;//天数后移三位
return Math.abs(year + day);//取绝对值
}catch (Exception e){
e.printStackTrace();
}
return null;
}
JAVA计算两个日期相差多少年多少天
于 2023-02-27 01:03:01 首次发布