package com.engine.gainway.util; import java.time.LocalDate; import java.time.Period; import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Author liang.cheng * @Date 2024/12/12 10:19 AM * @Description: TODO * @Version 1.0 */ public class BasicResourceUtil { public static int calculateAge(String birthday) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate birthDate = LocalDate.parse(birthday, formatter); LocalDate today = LocalDate.now(); int age = Period.between(birthDate, today).getYears(); if (today.getMonthValue() < birthDate.getMonthValue() || (today.getMonthValue() == birthDate.getMonthValue() && today.getDayOfMonth() < birthDate.getDayOfMonth())) { // 如果当前日期还没有到达生日日期,年龄减1 age--; } return age; } public static Map rangeExtractor(String name){ Pattern pattern = Pattern.compile("\\d{1,2}"); Matcher matcher = pattern.matcher(name); int from = 0; int to = 0; if (matcher.find()) { from = Integer.parseInt(matcher.group()); } if (matcher.find()) { to = Integer.parseInt(matcher.group()); } Map map = new HashMap<>(2); map.put("from",from); map.put("to",to); return map; } public static String calculateDate(LocalDate today, int number) { LocalDate birthDate = today.minusYears(number); return birthDate.toString(); } public static Map selectRangeSet(String name) { Map map = new HashMap<>(2); //提取范围 Map extractor = rangeExtractor(name); int from = extractor.get("from"); int to = extractor.get("to"); LocalDate today = LocalDate.now(); String fromDate = calculateDate(today, to+1); String toDate = calculateDate(today, from); map.put("fromDate",fromDate); map.put("toDate",toDate); return map; } public static Map companyYearRangeSet(String name) { Map map = new HashMap<>(2); //提取范围 Map extractor = rangeExtractor(name); int from = extractor.get("from"); int to = extractor.get("to"); LocalDate today = LocalDate.now(); String fromDate = calculateDate(today, to); String toDate = calculateDate(today, from); map.put("fromDate",fromDate); map.put("toDate",toDate); return map; } }