大陸居民身份證的奧祕

最近做項目的一個需求的時候才知道我們大陸居民身份證的奧祕,其實我們大陸具名身份證裏面不僅僅是包含着我們的生日情況,而且還包含這我們的我們的性別信息。

這裏是我們大陸居民身份證的一個說明文章:點擊打開鏈接

好了補閒聊了。我們現在使用java來進行我們索要信息的獲取:

1.首先我們從大陸居民身份證裏面獲取一個人的性別:看過文章的人我們知道身份證裏的奧祕,關於新別的是15爲的居民身份證是主要看最後一位的信息,如果是基數則表示主人是一位女性,如果是偶數則標識主人是一位男性。而18位的身份證呢,主要是看倒數第二位,也是基數男偶數女。但是呢最後一位是X的都是男性啦。好啦至於爲神呢是因爲是10的話我們的身份證有的人就有19位了,我們就用X來表示10.

好了我們來進行是用java進行性別的判斷:
/**
 * Created by luyangli on 15-8-25.
 */
public class shenfengzheng {
    public static void main(String[] args) {

        String ssz = "XXX567198005040714";
        String lastValue = null;
        if (ssz.length() == 15) {
            lastValue = ssz.substring(ssz.length() - 1, ssz.length());
            if (StringUtils.equals(lastValue.toLowerCase(), "x")) {
                System.out.println("");
                return;
            } else {
                int sex = Integer.parseInt(lastValue) % 2;
                if (sex == 0) {
                    System.out.println("");
                } else {
                    System.out.println("");
                }
                return;
            }
        } else if (ssz.length() == 18) {
            lastValue = ssz.substring(ssz.length() - 1, ssz.length());
            if (StringUtils.equals(lastValue.toLowerCase(), "x")) {
                System.out.println("");
                return;
            } else {
                String validValue = ssz.substring(ssz.length() - 2, ssz.length() - 1);
                int sex = Integer.parseInt(validValue) % 2;
                if (sex == 0) {
                    System.out.println("");
                } else {
                    System.out.println("");
                }
                return;
            }
        }
    }
}

來看一下我們的結果是不是OK,這個是我的身份證號碼,原諒我將他進行了亂改(隱私第一位):

======================
男

看來我是一個男人啊。。。

接下來我們進行身份證的另一個奧妙的理解就是用java進行生日的提取:
int len = ssz.length();
if (len != 18 || ssz == null) {
    System.out.println("省份證有誤!");
    // return;
} else {
    String year = new StringBuilder().append(ssz.substring(6, 10)).toString();
    System.out.println(year);
    String mouth = new StringBuilder().append(ssz.substring(10, 12)).toString();
    System.out.println(mouth);
    String day = new StringBuilder().append(ssz.substring(12, 14)).toString();
System.out.println(day); String sr = new StringBuilder().append(year).append("-").append(mouth).append("-").append(day).toString(); System.out.println(sr); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { Date date = simpleDateFormat.parse(sr); System.out.println(date); System.out.println("======================"); } catch (ParseException e) { System.out.println("error"); }}

我們開看一下結果:

1980
05
04
1980-05-04
Sun May 04 00:00:00 CST 1980

OK,我們的任務今天完成了,其實我們的身份證還有很多的奧祕,我們來不理解,其實看看我們的介紹文章,其實還有省份等等的意義的蘊含。這裏我有一篇參考的文章,大家可以看看:

點擊打開鏈接



發佈了29 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章