身份證號相關操作

一、根據身份證號提取年齡

根據身份證號,可以提取出生年月日,通過當前日期計算年齡。

提取出生年月日:

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/zh-tw/n/148335.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
KSDI的頭像KSDI
上一篇 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

發表回復

登錄後才能評論