身份证号相关操作

一、根据身份证号提取年龄

根据身份证号,可以提取出生年月日,通过当前日期计算年龄。

提取出生年月日:

public static String getBirthByIDCard(String idCard) {
    if (idCard.length() == 18) {
        return idCard.substring(6, 10) + "-" + idCard.substring(10, 12) + "-" + idCard.substring(12, 14);
    } else if (idCard.length() == 15) {
        return "19" + idCard.substring(6, 8) + "-" + idCard.substring(8, 10) + "-" + idCard.substring(10, 12);
    } else {
        return "";
    }
}

计算年龄:

public static int getAgeByIDCard(String idCard) {
    try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar dob = Calendar.getInstance();
        dob.setTime(sdf.parse(getBirthByIDCard(idCard)));
        Calendar today = Calendar.getInstance();
        int year = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
        int month = today.get(Calendar.MONTH) - dob.get(Calendar.MONTH);
        int day = today.get(Calendar.DAY_OF_MONTH) - dob.get(Calendar.DAY_OF_MONTH);
        if (month < 0 || (month == 0 && day < 0)) {
            year--;
        }
        return year;
    } catch (ParseException e) {
        e.printStackTrace();
        return 0;
    }
}

二、根据身份证号提取出生日期

根据身份证号可以提取出生日期,根据身份证号的长度不同,提取出生日期的方式也不同。

身份证号为15位:

public static String getBirthByIDCard(String idCard) {
    if (idCard.length() == 15) {
        return "19" + idCard.substring(6, 8) + "-" + idCard.substring(8, 10) + "-" + idCard.substring(10, 12);
    } else {
        return "";
    }
}

身份证号为18位:

public static String getBirthByIDCard(String idCard) {
    if (idCard.length() == 18) {
        return idCard.substring(6, 10) + "-" + idCard.substring(10, 12) + "-" + idCard.substring(12, 14);
    } else {
        return "";
    }
}

三、根据身份证号如何查身份证有效期

身份证的有效期是从领证之日起计算的,以10年为一个周期,每个周期内的1、6月份是身份证的有效期截止日期,例如领证日期为:2008年10月1日,那么该身份证的有效期截止日期为:2018年10月1日。

public static String getIDCardValidDate(String idCard) {
    if (idCard.length() == 18) {
        String year = idCard.substring(6, 10);
        String month = idCard.substring(10, 12);
        String day = idCard.substring(12, 14);
        int age = Integer.parseInt(getAgeByIDCard(idCard));
        int validYear = Integer.parseInt(year) + age + (age >= 18 && age % 10 < Integer.parseInt(year.substring(2)) ? 10 : 0);
        return validYear + "-" + month + "-" + day;
    } else {
        return "";
    }
}

四、根据身份证号码提取年龄

与“根据身份证号提取年龄”相同。

五、根据身份证号查询车票

根据身份证号查询车票通常用于火车站、长途汽车站等场所,通过身份证号查询该人是否已买了车票以及车票的信息。

public static String getTicketInfoByIDCard(String idCard) {
    // TODO
}

六、根据身份证号提取性别

根据身份证号可以提取性别,身份证号的倒数第2位为奇数代表男性,偶数代表女性。

public static String getGenderByIDCard(String idCard) {
    if (idCard.length() == 18) {
        int genderCode = Integer.parseInt(idCard.substring(16, 17));
        if (genderCode % 2 == 0) {
            return "女";
        } else {
            return "男";
        }
    } else {
        return "";
    }
}

七、根据身份证号码查询个人信息

根据身份证号可以查询个人信息,如:姓名、出生年月、性别、籍贯等。

public static String getPersonInfoByIDCard(String idCard) {
    // TODO
}

八、根据身份证号计算年龄的公式

年龄的计算可以用以下公式:

年龄 = 当前年份 – 出生年份 -1 (到生日那年) + 出生年份所在世纪年份的增量

出生年份所在世纪年份的增量是指,每过一个世纪,这个增量就要加1。

public static int calculateAge(String birthDateStr) {
    try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar dob = Calendar.getInstance();
        dob.setTime(sdf.parse(birthDateStr));
        Calendar today = Calendar.getInstance();
        int year = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
        if (today.get(Calendar.DAY_OF_YEAR) < dob.get(Calendar.DAY_OF_YEAR)) {
            year--;
        }
        int century = Integer.parseInt(birthDateStr.substring(0, 2));
        int increment = (century - 19) / 4;
        return year - increment;
    } catch (ParseException e) {
        e.printStackTrace();
        return 0;
    }
}

九、根据身份证查手机号

根据身份证查手机号通常用于实名认证,通过身份证号查询该人的手机号。

public static String getMobileByIDCard(String idCard) {
    // TODO
}

十、根据身份证号码提取出生年月

与“根据身份证号提取出生日期”相同。

原创文章,作者:KSDI,如若转载,请注明出处:https://www.506064.com/n/148335.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
KSDIKSDI
上一篇 2024-11-03 15:15
下一篇 2024-11-03 15:15

相关推荐

  • Python栈操作用法介绍

    如果你是一位Python开发工程师,那么你必须掌握Python中的栈操作。在Python中,栈是一个容器,提供后进先出(LIFO)的原则。这篇文章将通过多个方面详细地阐述Pytho…

    编程 2025-04-29
  • Python操作数组

    本文将从多个方面详细介绍如何使用Python操作5个数组成的列表。 一、数组的定义 数组是一种用于存储相同类型数据的数据结构。Python中的数组是通过列表来实现的,列表中可以存放…

    编程 2025-04-29
  • Python操作MySQL

    本文将从以下几个方面对Python操作MySQL进行详细阐述: 一、连接MySQL数据库 在使用Python操作MySQL之前,我们需要先连接MySQL数据库。在Python中,我…

    编程 2025-04-29
  • Python磁盘操作全方位解析

    本篇文章将从多个方面对Python磁盘操作进行详细阐述,包括文件读写、文件夹创建、删除、文件搜索与遍历、文件重命名、移动、复制、文件权限修改等常用操作。 一、文件读写操作 文件读写…

    编程 2025-04-29
  • Python代码实现回文数最少操作次数

    本文将介绍如何使用Python解决一道经典的回文数问题:给定一个数n,按照一定规则对它进行若干次操作,使得n成为回文数,求最少的操作次数。 一、问题分析 首先,我们需要了解回文数的…

    编程 2025-04-29
  • Python元祖操作用法介绍

    本文将从多个方面对Python元祖的操作进行详细阐述。包括:元祖定义及初始化、元祖遍历、元祖切片、元祖合并及比较、元祖解包等内容。 一、元祖定义及初始化 元祖在Python中属于序…

    编程 2025-04-29
  • Python列表的读写操作

    本文将针对Python列表的读取与写入操作进行详细的阐述,包括列表的基本操作、列表的增删改查、列表切片、列表排序、列表反转、列表拼接、列表复制等操作。 一、列表的基本操作 列表是P…

    编程 2025-04-29
  • 如何用Python对数据进行离散化操作

    数据离散化是指将连续的数据转化为离散的数据,一般是用于数据挖掘和数据分析中,可以帮助我们更好的理解数据,从而更好地进行决策和分析。Python作为一种高效的编程语言,在数据处理和分…

    编程 2025-04-29
  • Python序列的常用操作

    Python序列是程序中的重要工具,在数据分析、机器学习、图像处理等很多领域都有广泛的应用。Python序列分为三种:列表(list)、元组(tuple)和字符串(string)。…

    编程 2025-04-28
  • Python获取Flutter上内容的方法及操作

    本文将从以下几个方面介绍Python如何获取Flutter上的内容: 一、获取Flutter应用数据 使用Flutter提供的Platform Channel API可以很容易地获…

    编程 2025-04-28

发表回复

登录后才能评论