package com.ruoyi.project.common;
|
|
import java.time.LocalDate;
|
import java.time.Period;
|
import java.time.temporal.ChronoUnit;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
public class CalculateDateUtils {
|
public static Map<String, String> calculateAge(LocalDate birthdate, LocalDate today) {
|
if (birthdate == null || today.isBefore(birthdate)) {
|
return null;
|
}
|
Map<String, String> ageMap = new HashMap<>();
|
|
Period period = Period.between(birthdate, today);
|
long totalDays = ChronoUnit.DAYS.between(birthdate, today);
|
long totalMonths = ChronoUnit.MONTHS.between(birthdate, today);
|
|
int years = period.getYears();
|
int months = period.getMonths();
|
int days = period.getDays();
|
|
String ageUnit;
|
Integer age;
|
String ageUnit2 = null;
|
Integer age2 = null;
|
|
if (totalDays < 30) {
|
// 小于 1 个月,按天计算
|
ageUnit = "天";
|
age = (int) totalDays;
|
ageMap.put("age", age != null ? age.toString() : null);
|
ageMap.put("ageUnit", ageUnit);
|
ageMap.put("age2", null);
|
ageMap.put("ageUnit2", null);
|
} else if (totalMonths < 12) {
|
// 小于 一年,按月 + 天计算
|
ageUnit = "月";
|
age = (int) totalMonths;
|
ageUnit2 = "天";
|
age2 = days;
|
ageMap.put("age", age != null ? age.toString() : null);
|
ageMap.put("ageUnit", ageUnit);
|
ageMap.put("age2", age2 != null ? age2.toString() : null);
|
ageMap.put("ageUnit2", ageUnit2);
|
} else {
|
// 大于等于 一年,按年 + 月计算
|
ageUnit = "岁";
|
age = years;
|
ageUnit2 = "月";
|
age2 = months;
|
ageMap.put("age", age != null ? age.toString() : null);
|
ageMap.put("ageUnit", ageUnit);
|
ageMap.put("age2", age2 != null ? age2.toString() : null);
|
ageMap.put("ageUnit2", ageUnit2);
|
}
|
|
return ageMap;
|
}
|
}
|