Java --- 根据身份证号计算年龄

介绍

根据身份证号计算年龄

Java代码

java 复制代码
/**
     * 根据身份证号计算年龄
     * @param birthDateStr
     * @return
     */
    public static int calculateAge(String birthDateStr) {
        try {
            birthDateStr=birthDateStr.substring(6,6+8);
            // 定义日期格式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            // 将字符串类型的出生日期转换为 Date 对象
            Date birthDate = sdf.parse(birthDateStr);
            // 获取当前的日期和时间
            Calendar now = Calendar.getInstance();
            // 获取当前年份
            int currentYear = now.get(Calendar.YEAR);
            // 获取当前月份
            int currentMonth = now.get(Calendar.MONTH) + 1;
            // 获取当前日期
            int currentDay = now.get(Calendar.DAY_OF_MONTH);

            // 创建一个 Calendar 对象来表示出生日期
            Calendar birthCalendar = Calendar.getInstance();
            birthCalendar.setTime(birthDate);
            // 获取出生年份
            int birthYear = birthCalendar.get(Calendar.YEAR);
            // 获取出生月份
            int birthMonth = birthCalendar.get(Calendar.MONTH) + 1;
            // 获取出生日期
            int birthDay = birthCalendar.get(Calendar.DAY_OF_MONTH);

            // 先计算年份差作为初始年龄
            int age = currentYear - birthYear;
            // 如果当前月份小于出生月份,说明还未到生日,年龄减 1
            if (currentMonth < birthMonth) {
                age--;
            } else if (currentMonth == birthMonth) {
                // 如果当前月份等于出生月份,再比较日期
                if (currentDay < birthDay) {
                    // 如果当前日期小于出生日期,说明还未到生日,年龄减 1
                    age--;
                }
            }
            return age;
        } catch (ParseException e) {
            // 处理日期解析异常,打印异常信息并返回 -1 表示错误
            e.printStackTrace();
            return -1;
        }
    }
相关推荐
计算机毕设指导620 小时前
基于微信小程序的丽江市旅游分享系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·旅游
毕设源码-郭学长20 小时前
【开题答辩全过程】以 基于python电商商城系统为例,包含答辩的问题和答案
开发语言·python
散峰而望20 小时前
【算法竞赛】栈和 stack
开发语言·数据结构·c++·算法·leetcode·github·推荐算法
Mr -老鬼20 小时前
Rust 的优雅和其他语言的不同之处
java·开发语言·rust
网安CILLE20 小时前
PHP四大输出语句
linux·开发语言·python·web安全·网络安全·系统安全·php
weixin_5316518120 小时前
Rust 的所有权机制
java·开发语言·rust
江公望20 小时前
QT/QML qmlRegisterType()函数浅谈
开发语言·qt
foundbug99920 小时前
MATLAB中实现信号迭代解卷积功能
开发语言·深度学习·matlab
Seven9721 小时前
SPI机制:服务扩展的核心技术
java