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; 
 | 
    } 
 | 
} 
 |