最近做项目的一个需求的时候才知道我们大陆居民身份证的奥秘,其实我们大陆具名身份证里面不仅仅是包含着我们的生日情况,而且还包含这我们的我们的性别信息。
这里是我们大陆居民身份证的一个说明文章:点击打开链接
好了补闲聊了。我们现在使用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,我们的任务今天完成了,其实我们的身份证还有很多的奥秘,我们来不理解,其实看看我们的介绍文章,其实还有省份等等的意义的蕴含。这里我有一篇参考的文章,大家可以看看: