`
zhijin
  • 浏览: 76008 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java工具类

阅读更多

Java的身份证号码工具类

 

网上看到的一段代码:


001 /**
002   * Copyright (C) 2009-2010 Yichuan, Fuchun All rights reserved.
003   * Licensed to the Apache Software Foundation (ASF) under one or more
004   * contributor license agreements. See the NOTICE file distributed with
005   * this work for additional information regarding copyright ownership.
006   * The ASF licenses this file to You under the Apache License, Version 2.0
007   * (the "License"); you may not use this file except in compliance with
008   * the License. You may obtain a copy of the License at
009   * http://www.apache.org/licenses/LICENSE-2.0
010   * Unless required by applicable law or agreed to in writing, software
011   * distributed under the License is distributed on an "AS IS" BASIS,
012   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013   * See the License for the specific language governing permissions and
014   * limitations under the License.
015   * @(#) IdcardUtils.java Date: 2010-06-17
016   */
017 package my.tools;
018  
019 import java.text.ParseException;
020 import java.text.SimpleDateFormat;
021 import java.util.Calendar;
022 import java.util.Date;
023 import java.util.HashMap;
024 import java.util.Map;
025  
026 /**
027   * 身份证工具类
028   *
029   * @author June
030   * @version 1.0, 2010-06-17
031   */
032 public class IdcardUtils extends StringUtils {
033  
034      /** 中国公民身份证号码最小长度。 */
035      public static final int CHINA_ID_MIN_LENGTH = 15 ;
036  
037      /** 中国公民身份证号码最大长度。 */
038      public static final int CHINA_ID_MAX_LENGTH = 18 ;
039  
040      /** 省、直辖市代码表 */
041      public static final String cityCode[] = {
042              "11" , "12" , "13" , "14" , "15" , "21" , "22" , "23" , "31" , "32" , "33" , "34" , "35" , "36" , "37" , "41" ,
043              "42" , "43" , "44" , "45" , "46" , "50" , "51" , "52" , "53" , "54" , "61" , "62" , "63" , "64" , "65" , "71" ,
044              "81" , "82" , "91"
045      };
046  
047      /** 每位加权因子 */
048      public static final int power[] = {
049              7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 , 6 , 3 , 7 , 9 , 10 , 5 , 8 , 4 , 2
050      };
051  
052      /** 第18位校检码 */
053      public static final String verifyCode[] = {
054              "1" , "0" , "X" , "9" , "8" , "7" , "6" , "5" , "4" , "3" , "2"
055      };
056      /** 最低年限 */
057      public static final int MIN = 1930 ;
058      public static Map<String, String> cityCodes = new HashMap<String, String>();
059      /** 台湾身份首字母对应数字 */
060      public static Map<String, Integer> twFirstCode = new HashMap<String, Integer>();
061      /** 香港身份首字母对应数字 */
062      public static Map<String, Integer> hkFirstCode = new HashMap<String, Integer>();
063      static {
064          cityCodes.put( "11" , "北京" );
065          cityCodes.put( "12" , "天津" );
066          cityCodes.put( "13" , "河北" );
067          cityCodes.put( "14" , "山西" );
068          cityCodes.put( "15" , "内蒙古" );
069          cityCodes.put( "21" , "辽宁" );
070          cityCodes.put( "22" , "吉林" );
071          cityCodes.put( "23" , "黑龙江" );
072          cityCodes.put( "31" , "上海" );
073          cityCodes.put( "32" , "江苏" );
074          cityCodes.put( "33" , "浙江" );
075          cityCodes.put( "34" , "安徽" );
076          cityCodes.put( "35" , "福建" );
077          cityCodes.put( "36" , "江西" );
078          cityCodes.put( "37" , "山东" );
079          cityCodes.put( "41" , "河南" );
080          cityCodes.put( "42" , "湖北" );
081          cityCodes.put( "43" , "湖南" );
082          cityCodes.put( "44" , "广东" );
083          cityCodes.put( "45" , "广西" );
084          cityCodes.put( "46" , "海南" );
085          cityCodes.put( "50" , "重庆" );
086          cityCodes.put( "51" , "四川" );
087          cityCodes.put( "52" , "贵州" );
088          cityCodes.put( "53" , "云南" );
089          cityCodes.put( "54" , "西藏" );
090          cityCodes.put( "61" , "陕西" );
091          cityCodes.put( "62" , "甘肃" );
092          cityCodes.put( "63" , "青海" );
093          cityCodes.put( "64" , "宁夏" );
094          cityCodes.put( "65" , "新疆" );
095          cityCodes.put( "71" , "台湾" );
096          cityCodes.put( "81" , "香港" );
097          cityCodes.put( "82" , "澳门" );
098          cityCodes.put( "91" , "国外" );
099          twFirstCode.put( "A" , 10 );
100          twFirstCode.put( "B" , 11 );
101          twFirstCode.put( "C" , 12 );
102          twFirstCode.put( "D" , 13 );
103          twFirstCode.put( "E" , 14 );
104          twFirstCode.put( "F" , 15 );
105          twFirstCode.put( "G" , 16 );
106          twFirstCode.put( "H" , 17 );
107          twFirstCode.put( "J" , 18 );
108          twFirstCode.put( "K" , 19 );
109          twFirstCode.put( "L" , 20 );
110          twFirstCode.put( "M" , 21 );
111          twFirstCode.put( "N" , 22 );
112          twFirstCode.put( "P" , 23 );
113          twFirstCode.put( "Q" , 24 );
114          twFirstCode.put( "R" , 25 );
115          twFirstCode.put( "S" , 26 );
116          twFirstCode.put( "T" , 27 );
117          twFirstCode.put( "U" , 28 );
118          twFirstCode.put( "V" , 29 );
119          twFirstCode.put( "X" , 30 );
120          twFirstCode.put( "Y" , 31 );
121          twFirstCode.put( "W" , 32 );
122          twFirstCode.put( "Z" , 33 );
123          twFirstCode.put( "I" , 34 );
124          twFirstCode.put( "O" , 35 );
125          hkFirstCode.put( "A" , 1 );
126          hkFirstCode.put( "B" , 2 );
127          hkFirstCode.put( "C" , 3 );
128          hkFirstCode.put( "R" , 18 );
129          hkFirstCode.put( "U" , 21 );
130          hkFirstCode.put( "Z" , 26 );
131          hkFirstCode.put( "X" , 24 );
132          hkFirstCode.put( "W" , 23 );
133          hkFirstCode.put( "O" , 15 );
134          hkFirstCode.put( "N" , 14 );
135      }
136  
137      /**
138       * 将15位身份证号码转换为18位
139       *
140       * @param idCard
141       *            15位身份编码
142       * @return 18位身份编码
143       */
144      public static String conver15CardTo18(String idCard) {
145          String idCard18 = "" ;
146          if (idCard.length() != CHINA_ID_MIN_LENGTH) {
147              return null ;
148          }
149          if (isNum(idCard)) {
150              // 获取出生年月日
151              String birthday = idCard.substring( 6 , 12 );
152              Date birthDate = null ;
153              try {
154                  birthDate = new SimpleDateFormat( "yyMMdd" ).parse(birthday);
155              } catch (ParseException e) {
156                  e.printStackTrace();
157              }
158              Calendar cal = Calendar.getInstance();
159              if (birthDate != null )
160                  cal.setTime(birthDate);
161              // 获取出生年(完全表现形式,如:2010)
162              String sYear = String.valueOf(cal.get(Calendar.YEAR));
163              idCard18 = idCard.substring( 0 , 6 ) + sYear + idCard.substring( 8 );
164              // 转换字符数组
165              char [] cArr = idCard18.toCharArray();
166              if (cArr != null ) {
167                  int [] iCard = converCharToInt(cArr);
168                  int iSum17 = getPowerSum(iCard);
169                  // 获取校验位
170                  String sVal = getCheckCode18(iSum17);
171                  if (sVal.length() > 0 ) {
172                      idCard18 += sVal;
173                  } else {
174                      return null ;
175                  }
176              }
177          } else {
178              return null ;
179          }
180          return idCard18;
181      }
182  
<tbody
分享到:
评论

相关推荐

    30个java工具类

    [工具类] 获得汉字拼音首字母的java工具类.java.txt [工具类] 获取绝对路径 .java.txt [工具类] 记录log日志文件的工具类 .java.txt [工具类] 连接数据库的工具类 .java.txt [工具类] 使用Java程序来实现HTTP文件的...

    Rabbitmq工具类,java工具类RabbitmqUtil

    总的来说,`RabbitmqUtil`是一个强大的Java工具类,它简化了RabbitMQ的使用,使得开发者能更专注于业务逻辑,而不是底层的消息传递细节。只需根据自己的RabbitMQ服务器配置调整初始化参数,就可以轻松地在项目中集成...

    Java工具类合集

    本资源名为“Java工具类合集”,显然是一份集合了多种功能的Java工具类库,可能包含了一系列开源框架中的实用工具类。 首先,我们可以从“mysql版本”这个标签推测,这个合集中可能包含了与MySQL数据库交互相关的...

    常用Java工具类

    以下是对标题和描述中提到的一些常用Java工具类的详细解释: 1. **数据库池工具类**:数据库连接池是管理数据库连接的一种机制,它能有效地复用已存在的数据库连接,避免频繁创建和关闭连接导致的性能开销。常见的...

    【强2】30个java工具类

    使用java工具类可有效的提高开发效率! 没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中...

    java工具类集合

    Java工具类集合是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,工具类通常被组织在各种包下,如`java.util`、`java.lang`、`java.io`等。下面将详细介绍...

    比较全的java工具类

    Java工具类是编程中不可或缺的一部分,它们提供了许多实用的功能,帮助开发者提高代码的效率和可维护性。在Java中,工具类通常包含了各种通用的方法,适用于多种场景,减少了重复编码的工作。以下是一些主要的Java...

    java工具类

    Java工具类是Java编程语言中一个非常重要的组成部分,它们提供了许多实用的方法,帮助开发者更高效地处理各种编程任务。在Java中,工具类通常被设计为静态方法集合,不依赖于实例化对象,可以直接调用类中的方法进行...

    Base64Utils java工具类

    Base64Utils java工具类

    JAVA工具类(整合,xml,json,MD5,加密解密)

    本资源提供的"JAVA工具类"整合了XML处理、JSON操作、MD5加密以及加解密功能,对提高开发效率大有裨益。 1. **XML处理**: - DOM解析:DOM(Document Object Model)是一种将XML文档映射为树形结构的方法,通过它...

    常用的java工具类

    1.[工具类] 读取、打印输出、保存xml .java 2.[工具类] Java中计算任意两个日期之间的工作天数 .java 3.[工具类] MD5 .java 4.[工具类] 时间工具TimeUtil.java 5.[工具类] 通信服务端simpleServer 6.[工具类] 使用...

    50个左右的JAVA工具类,相对比较全

    标题提到的"50个左右的JAVA工具类,相对比较全"表明这是一个集合了大量常用工具方法的资源包。描述中指出,这些工具类是开发者多年工作经验的结晶,涵盖了一些常见的需求,但可能并不完美,可能存在一些遗漏,欢迎...

    JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库

    JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与...

    27个java工具类

    本压缩包提供了27个常用的Java工具类,涵盖了编码解码、安全加密、日期时间处理、文件操作等多个领域。以下是这些工具类的详细介绍: 1. **Base64Util**:这是一个用于Base64编码和解码的工具类。Base64是一种广泛...

    Java工具类介绍

    这是本人在公司培训时做的一个PPT文档,介绍了Java常用的工具类

    Ut.rar_java 开发ut包_javaut demo_java工具_java工具类_基础工具

    4. **Java工具类**:在Java开发中,工具类通常是一些静态方法集合,这些方法解决特定的问题或提供通用功能。Ut类可能是这样一个工具类,它可能包含了如日期时间处理、集合操作、IO流操作等多种实用方法。 5. **基础...

    java抓取网页-java工具类

    java抓取网页java工具类java抓取网页java工具类

Global site tag (gtag.js) - Google Analytics