大陆居民身份证的奥秘

来源:互联网 发布:长虹老年机淘宝 编辑:程序博客网 时间:2024/04/28 17:59

最近做项目的一个需求的时候才知道我们大陆居民身份证的奥秘,其实我们大陆具名身份证里面不仅仅是包含着我们的生日情况,而且还包含这我们的我们的性别信息。

这里是我们大陆居民身份证的一个说明文章:点击打开链接

好了补闲聊了。我们现在使用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"); }}

我们开看一下结果:

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

OK,我们的任务今天完成了,其实我们的身份证还有很多的奥秘,我们来不理解,其实看看我们的介绍文章,其实还有省份等等的意义的蕴含。这里我有一篇参考的文章,大家可以看看:

点击打开链接



0 0
原创粉丝点击