怎么讲呢,首先我们先了解身份证的构成。

1 地址码
  (身份证前六位)表示编码对象常住户口所在县(市、镇、区)的行政区划代码。1-2位省、自治区、直辖市代码; 3-4位地级市、盟、自治州代码; 5-6位县、县级市、区代码;
2 生日期码
  (身份证第七位到第十四位)表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。
3 顺序码
  (身份证第十五位到十七位)地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。其中第十七位奇数分给男性,偶数分给女性。
4 校验码
  (身份证最后一位)是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且中国的计算机应用系统也不承认19位的身份证号码。Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。

以下是代码。

package bao1;import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;public class ceshi {//设定长度public static final int ID_length=18;//获取年份public static String GetYear(String ID){Integer leg = ID.length();if(leg<ID_length){return "输入身份证号码有误请确认后在输入";}return ID.substring(6, 10);}//获取月份public static String GetMonth(String ID){Integer leg = ID.length();if(leg<ID_length){return "";}return ID.substring(10, 12);}//获取出生日期public static String GetDay(String ID){Integer len=ID.length();if(len<ID_length)return null;return ID.substring(12,14);}//通过身份证号码判断星座public static String GetConstellation(String ID){ceshi re = new ceshi();int month = Integer.parseInt(re.GetMonth(ID));int day = Integer.parseInt(re.GetDay(ID));String value = "";if(((month==3)   && (day >=21)) || ((month==4)  &&(day<=19))) value="白羊座";if(((month==4)   && (day >=20)) || ((month==5)  &&(day<=20))) value="金牛座";if(((month==5)   && (day >=21)) || ((month==6)  &&(day<=21))) value="双子座";if(((month==6)   && (day >=22)) || ((month==7)  &&(day<=22))) value="巨蟹座";if(((month==7)   && (day >=23)) || ((month==8)  &&(day<=22))) value="狮子座";if(((month==8)   && (day >=23)) || ((month==9)  &&(day<=22))) value="处女座";if(((month==9)   && (day >=23)) || ((month==10) &&(day<=23))) value="天秤座";if(((month==10)  && (day >=24)) || ((month==11) &&(day<=22))) value="天蝎座";if(((month==11)  && (day >=23)) || ((month==12) &&(day<=21))) value="射手座";if(((month==12)  && (day >=22)) || ((month==1)  &&(day<=19))) value="摩羯座";if(((month==1)   && (day >=20)) || ((month==2)  &&(day<=18))) value="水瓶座";if(((month==2)   && (day >=19)) || ((month==3)  &&(day<=20))) value="双鱼座";return value;    }//判断属相public static String GetZodia(String ID){ceshi Re = new ceshi();int year=Integer.parseInt(Re.GetYear(ID));String zodia[]={"鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"};int i=(year-4)%12;String value=zodia[i];return value;}//根据身份证号得到年龄public static int IdNOToAge(String IdNO){int leh = IdNO.length();String dates="";if (leh == 18) {dates = IdNO.substring(6, 10);}else{dates = IdNO.substring(6, 8);dates = "19"+dates;}SimpleDateFormat df = new SimpleDateFormat("yyyy");String year=df.format(new Date());int u=Integer.parseInt(year)-Integer.parseInt(dates);return u;}public static void main(String[] args) {ceshi ce = new ceshi();String id ="320826199908083241";String birth = id.substring(6, 14);String sex = id.substring(16, 17);if(Integer.parseInt(sex)%2==0){sex = "女";}else{sex ="男";}System.out.println("生日:"+birth+"性别"+sex);System.out.println(ce.IdNOToAge(id));System.out.println(ce.GetConstellation(id));System.out.println(ce.GetZodia(id));}
}

如何通过身份证,切割获取性别,年龄,属相,星座,性别,生日相关推荐

  1. 根据身份证号获取相关信息(籍贯、性别、出生日期...)

    根据身份证号获取相关信息(籍贯.性别.出生日期-) 首先我的只是个demo,身份证号也是写死的.仅供参考! 通过访问其他HTTP接口,将身份证号当作参数.调用接口返回相关信息 效果展示: **接口地址 ...

  2. Python 从身份证中提取出生日期/性别/年龄/生肖/星座/省份/城市/城市等级/区县(2019划分标准)

    写在前面 用python实现快速从身份证中explore尽量多的的信息,找了很多资料,发现并不全.参考已有的分享和其他信息自己写了. 能提取的信息: 出生日期.年龄.生肖.星座.省份.城市.区县.归属 ...

  3. sql 通过身份证号字段 推算 年龄age与性别sex

    首先是需要查出身份证号字段  在取身份证号上的出生年月判断个人年龄 在取身份证号上尾数判断个人性别 DEMO SQL: SELECT     b.idno as 身份证号,     (year(NOW ...

  4. 转java通过身份证号码获取出生日期、性别、年龄

    转自:https://blog.csdn.net/u011199063/article/details/79564587 身份证号码: 15位:6位地址码+6位出生年月日(900101代表1990年1 ...

  5. java通过身份证号码获取出生日期、性别、年龄

    身份证号码: 15位:6位地址码+6位出生年月日(900101代表1990年1月1日出生)+3位顺序码 18位:6位地址码+8位出生年月日(19900101代表1990年1月1日出生)+3位顺序码+1 ...

  6. js脚本根据身份证号获取性别、年龄、家庭地址、生日

    做项目测试时需要根据身份证号获取其信息,也不想调接口,就自己在本地通过收集资料整合了一个 当身份证号的焦点失去选中后,根据身份证号获取性别.年龄.家庭地址.生日 直接上代码: index.html & ...

  7. 前端——使用JavaScript(jQuery)通过身份证号获取籍贯、生日、年龄、性别

    注:本文所用的身份证号码是18位号码,15位的号码类似 tips: 公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成. 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位 ...

  8. JS身份证号码校验,JS根据身份证号码获取出生年月日,JS根据出生年月日获取年龄,JS根据身份证号码获取性别

    目录 1.JS身份证号码校验 2.JS根据身份证号码获取出生年月日 3.JS根据出生年月日获取年龄 4.JS根据身份证号码获取性别 1.JS身份证号码校验 /*** 身份证校验** @export* ...

  9. js通过身份证号获取出生年月日,性别,年龄

    输入框输入身份证号时,我们可以通过js的方法来提取出身份证号里面的出生年月日以及性别,年龄,代码如下 /** 当type=1时获取出生日期,type=2时获取性别,type=3时获取年龄* */var ...

  10. js小技巧:根据身份证号,获取身份信息。如性别、生日、年龄

    根据输入的身份证号,返回身份证信息 如 性别 sex.生日 birthDay.年龄 age. 方法如下: // 返回身份证信息 如 性别 sex.生日 birthDayfunction getCard ...

最新文章

  1. 比较array相等_如何处理JavaScript比较中的临界问题
  2. [UVALive 7143]Room Assignment(Dp)
  3. event loop、进程和线程、任务队列
  4. linux 卸载自带java_卸载linux系统自带JDK,安装自己的jdk
  5. ​shell中经常能看到的:/dev/null 21
  6. 一个检查SPN的小工具
  7. omnicppcomplete php,VIM 常用法 (三)
  8. LeetCode 2190. 数组中紧跟 key 之后出现最频繁的数字
  9. Spark入门阶段一之扫盲笔记
  10. AndroidStudio_在android中使用properties配置文件_进行配置_只能读取配置_不能写入配置_放在assets---Android原生开发工作笔记230
  11. 漫谈依赖管理工具:从Maven,Gradle到Go
  12. 『Others』markdown简历制作
  13. 计算机安全威胁防范,计算机网络安全威胁及防范措施
  14. ubuntu打开只读文件并修改
  15. Linux下tftp服务器/客户端安装
  16. 试验设计方法与Design-Expert软件应用目录
  17. 云计算的特点与产生、云计算体系结构、新摩尔定律、云计算优势
  18. 隐藏删除 gitbook Published with GitBook 的方法
  19. 基于PHP旅游网站的设计与开发
  20. bat批处理文件注释

热门文章

  1. 对序列化后的buffer进行strlen操作, oh my god
  2. 搜狗智能输入环将面世 这是搜狗的愚人节玩笑吗?
  3. java我的世界怎么一键开服,《我的世界》简单实用快速开服方法教程
  4. CQOI2007矩形
  5. 002 - SPDK官方介绍
  6. 《前任3:再见前任》
  7. Android学习笔记:自定义View之手写签名
  8. nginx下配置显示网站图标
  9. Pytorch col2im(nn.Fold)
  10. 日本”闲鱼“Mercari煤炉是什么?如何做?