Java身份证有效期校验

简介

在开发中,经常会遇到需要校验身份证号码的有效性的情况。而身份证有效期的校验是其中一个重要的步骤。本文将介绍如何使用Java实现身份证有效期的校验。

流程

下面是实现身份证有效期校验的整体流程:

步骤 描述
1. 提取有效期信息 从身份证号码中提取有效期信息
2. 校验有效期格式 验证提取的有效期格式是否正确
3. 校验有效期是否过期 根据当前日期,判断有效期是否已过期

接下来,我们将逐步介绍每个步骤需要做什么,以及对应的代码实现。

提取有效期信息

首先,我们需要从身份证号码中提取有效期信息。根据身份证号码的规则,有效期信息位于第7至14位。我们可以使用Java的字符串截取方法来实现。

// 提取有效期信息
String idCard = "11010119900101001X";
String validPeriod = idCard.substring(6, 14);

校验有效期格式

接下来,我们需要验证提取的有效期格式是否正确。根据国家标准,有效期的格式应为8位数字(如20221231)。我们可以使用正则表达式来校验格式是否正确。

// 校验有效期格式
String regex = "^\\d{8}$";
boolean isValidFormat = validPeriod.matches(regex);

校验有效期是否过期

最后,我们需要根据当前日期,判断有效期是否已过期。我们可以使用Java的Date类和SimpleDateFormat类来实现。

// 校验有效期是否过期
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date currentDate = new Date();
Date validDate = sdf.parse(validPeriod);
boolean isExpired = validDate.before(currentDate);

完整代码示例

下面是以上步骤的完整代码示例:

public class IdCardValidator {
    public static void main(String[] args) throws Exception {
        String idCard = "11010119900101001X";
        
        // 提取有效期信息
        String validPeriod = idCard.substring(6, 14);
        
        // 校验有效期格式
        String regex = "^\\d{8}$";
        boolean isValidFormat = validPeriod.matches(regex);
        
        // 校验有效期是否过期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        Date currentDate = new Date();
        Date validDate = sdf.parse(validPeriod);
        boolean isExpired = validDate.before(currentDate);
        
        if (isValidFormat && !isExpired) {
            System.out.println("身份证有效期校验通过!");
        } else {
            System.out.println("身份证有效期已过期或格式不正确!");
        }
    }
}

类图

下面是身份证校验器的类图:

classDiagram
    class IdCardValidator {
        +main(String[] args)
    }

结论

通过以上步骤,我们可以实现Java身份证有效期的校验。首先,我们从身份证号码中提取有效期信息,然后校验有效期的格式是否正确,最后判断有效期是否已过期。这样,我们就可以确保身份证有效期的合法性。