无关风月
2025-05-08 9486766c806fe1d9e082b2fd02ea1cc558f1b443
cloud-server-account/src/main/java/com/dsh/account/util/DateUtil.java
@@ -150,7 +150,7 @@
     */
    public static Date parse(String date, String pattern) {
        try {
            if(Objects.nonNull(date)) {
            if (Objects.nonNull(date)) {
                return DateUtils.parseDate(date, pattern);
            }
        } catch (ParseException e) {
@@ -286,6 +286,7 @@
        Calendar cal = Calendar.getInstance();
        return cal;
    }
    /**
     * 毫秒转日期时间
     *
@@ -328,5 +329,88 @@
        Date dt1 = rightNow.getTime();
        return dt1.getTime();
    }
//
//    public static void main(String[] args) throws ParseException {
//        String big = "1997-08-16";
//        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
//        int age = DateUtil.age(simpleDateFormat.parse(big));
//        System.out.println(age);
//    }
    /**
     * 计算年龄
     *
     * @param birthDate
     * @return
     */
    public static int age(Date birthDate) {
        // 当前日历
        Calendar nowCalendar = Calendar.getInstance();
        // 生日大于当前日期
        if (nowCalendar.before(birthDate)) {
            throw new IllegalArgumentException("The birth date is before current time, it's unbelievable");
        }
        // 当前年月日
        int yearNow = nowCalendar.get(Calendar.YEAR);
        int monthNow = nowCalendar.get(Calendar.MONTH);
        int dayNow = nowCalendar.get(Calendar.DAY_OF_MONTH);
        // 出生日期年月日
        Calendar birthCalendar = Calendar.getInstance();
        birthCalendar.setTime(birthDate);
        int yearBirth = birthCalendar.get(Calendar.YEAR);
        int monthBirth = birthCalendar.get(Calendar.MONTH);
        int dayBirth = birthCalendar.get(Calendar.DAY_OF_MONTH);
        // 粗计算年龄
        int age = yearNow - yearBirth;
        // 当前月份小于出生月份年龄减一
        if (monthNow < monthBirth) {
            age--;
        }
        // 当前月份等于出生月份,日小于生日年龄减一
        else if (monthNow == monthBirth && dayNow < dayBirth) {
            age--;
        }
        // 返回年龄值
        return age;
    }
    // 获取近一周的开始时间
    public static Date getLastWeekStartDate() {
        Calendar calendar = Calendar.getInstance();
        // 设置为当前日期的前一周
        calendar.add(Calendar.DAY_OF_YEAR, -7);
        // 获取近一周的开始时间
        return calendar.getTime();
    }
    // 获取近一个月的开始时间
    public static Date getLastMonthStartDate() {
        Calendar calendar = Calendar.getInstance();
        // 设置为当前日期的前一个月
        calendar.add(Calendar.MONTH, -1);
        // 获取近一个月的开始时间
        return calendar.getTime();
    }
    // 获取近一年的开始时间
    public static Date getLastYearStartDate() {
        Calendar calendar = Calendar.getInstance();
        // 设置为当前日期的前一年
        calendar.add(Calendar.YEAR, -1);
        // 获取近一年的开始时间
        return calendar.getTime();
    }
    // 获取昨天的时间
    public static Date getLastOfDate() {
        Calendar calendar = Calendar.getInstance();
        // 设置为当前日期的前一个月
        calendar.add(Calendar.DAY_OF_YEAR, -1);
        // 获取近一个月的开始时间
        return calendar.getTime();
    }
}