1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| package utils;
import java.text.ParseException; import java.text.SimpleDateFormat;
public class BankUtils {
public static boolean checkIdCardNo(String idCardNo) { if (null == idCardNo) { return false; } idCardNo = idCardNo.toLowerCase(); if (null == idCardNo || (idCardNo.length() != 18 && idCardNo.length() != 15)) { return false; } String[] RC = {"1", "0", "x", "9", "8", "7", "6", "5", "4", "3", "2"}; boolean checkBirthday; String birthday;
try { if (idCardNo.length() == 18) { birthday = idCardNo.substring(6, 14); checkBirthday = isDate(birthday, "yyyyMMdd");
int[] W = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; int sum = 0; for (int i = 0; i < idCardNo.length() - 1; i++) { int c = Integer.parseInt(idCardNo.substring(i, i + 1)); sum += W[i] * c; } int r = sum % 11; if (RC[r].equals(idCardNo.substring(17)) && checkBirthday) { return true; } else { return false; } } else { birthday = "19" + idCardNo.substring(6, 12); checkBirthday = isDate(birthday, "yyyyMMdd"); if (checkBirthday) { return true; } else { return false; } } } catch (NumberFormatException e) { e.printStackTrace(); return false; } }
public static boolean isDate(String dateString, String format) { boolean convertSuccess = true; SimpleDateFormat smf = new SimpleDateFormat(format); try { smf.setLenient(false); smf.parse(dateString); } catch (ParseException e) { convertSuccess = false; } return convertSuccess; } }
|