package cn.lili.utils; import cn.lili.common.utils.StringUtils; import java.util.Calendar; import java.util.Date; /** * lmk-shop-java * 工具 * * @author : zxl * @date : 2025-08-07 14:40 **/ public class CommonUtil { public static Date[] getMonthStartAndEnd(int year, int month) { Calendar calendar = Calendar.getInstance(); Date[] result = new Date[2]; // 设置月份起始时间(当月的第一天 00:00:00) calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month - 1); // Calendar月份从0开始,0=1月 calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); result[0] = calendar.getTime(); // 月份起始时间 // 设置月份结束时间(下个月的第一天 00:00:00,然后减1毫秒) calendar.add(Calendar.MONTH, 1); calendar.add(Calendar.MILLISECOND, -1); result[1] = calendar.getTime(); // 月份结束时间 return result; } public static String maskName(String name) { if (StringUtils.isBlank(name)) { return ""; } // 规则:保留第一个字符,其余替换为 * return name.charAt(0) + StringUtils.repeat("*", name.length() - 1); } /** * 通用手机号脱敏:无论位数多少,均替换中间4位 * 示例: * - 13812345678 → 138****5678 * - 12345678 → 12****78 * - 12345 → 1****5 (不足4位时全部替换) */ public static String maskMobile(String mobile) { String digits = mobile.replaceAll("[^0-9]", ""); int length = digits.length(); // 2. 短号码直接隐藏 if (length <= 4) { return "****"; } // 3. 保留前2位和后2位,替换中间 return digits.replaceAll("(\\d{2})\\d+(\\d{2})", "$1****$2"); } }