大陆居民身份证的奥秘
来源:互联网 发布:长虹老年机淘宝 编辑:程序博客网 时间: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
- 大陆居民身份证的奥秘
- 验证居民身份证的合法性
- 居民身份证号码的编码规则
- 中国居民身份证上的信息英语翻译
- 不同机具的通用的第二代居民身份证读写
- 一个居民身份证的工具类 (GB11643-1999)
- 好牛的教育部某网站, 居民身份证号码验证函数
- 更精确的新旧中国居民身份证号码验证算法
- 中国居民身份证 算法 转 是java版本的
- 魔方的奥秘
- 杀毒软件的奥秘
- 雪花的奥秘
- 探索搜索引擎的奥秘
- 字符编码的奥秘
- 工资的奥秘
- 英语词汇的奥秘
- 中国房子的奥秘!
- 人左右手的奥秘
- 文件重命名小程序(适用于unix系c++)
- PHP set_error_handler() 函数与 trigger_error() 函数的配合使用
- LintCode -合并两个排序链表
- C语言_为什么字符串可以赋值给字符指针变量,字符串的属性及存放位置
- hiho coder 字符串处理
- 大陆居民身份证的奥秘
- C++16个常用面试题
- Vs2012修改包含路径的继承值方法
- UGUI研究院之全面理解图集与使用
- 杭电60道DP问题总结(一)
- 使用终端命令关闭Mac电脑开机启动音
- PullScrollView详解(五)——完全使用listview实现下拉回弹(方法二)
- jquery中元素属性的操作
- 虚幻4 UObject被删除