最近做項目的一個需求的時候才知道我們大陸居民身份證的奧祕,其實我們大陸具名身份證裏面不僅僅是包含着我們的生日情況,而且還包含這我們的我們的性別信息。
這裏是我們大陸居民身份證的一個說明文章:點擊打開鏈接
好了補閒聊了。我們現在使用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,我們的任務今天完成了,其實我們的身份證還有很多的奧祕,我們來不理解,其實看看我們的介紹文章,其實還有省份等等的意義的蘊含。這裏我有一篇參考的文章,大家可以看看: