用Java从任意给定的身份证号码中提取此人的出生日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Java从任意给定的身份证号码中提取此人的出生日期相关的知识,希望对你有一定的参考价值。

用Java从任意给定的身份证号码中提取此人的出生日期,例子如下:

public class TestC 
public static void main(String[] args)
//18位的第二代身份证,出生日期是从7位到14位是出生日期
String str="450919199903050123";
//字符串截取下标从0开始的
String birthday=str.substring(6, 14);
System.out.println(birthday);



结果:
19990305

参考技术A .....总共18位。。。去掉后4位,,再往前的8位数不就是生日嘛。。追问

要具体的程序

追答

String 身份证号="210213198009051234";
String 生日=身份证号.substring(6,14);

本回答被提问者和网友采纳
参考技术B public class IdNumber
public static String getBirthday(String idNumber)
return idNumber.substring(6, 14);

public static void main(String[] args)
String birthday = getBirthday("512501197203035172");
System.out.println(birthday);

参考技术C 用substring这个方法
具体自己写
我以前搞个身份证demo想要找我

IOS 根据身份证号码获取 年龄 生日 性别

/**

   从身份证上获取年龄 18位身份证

 */

-(NSString *)getIdentityCardAge:(NSString *)numberStr

{

    

    NSDateFormatter *formatterTow = [[NSDateFormatter alloc]init];

    [formatterTow setDateFormat:@"yyyy-MM-dd"];

    

    

    

    

    NSDate *bsyDate = [formatterTow dateFromString:[self birthdayStrFromIdentityCard:numberStr]];

    

    

    

    NSTimeInterval dateDiff = [bsyDate timeIntervalSinceNow];

    

    

    int age = trunc(dateDiff/(60*60*24))/365;

    

    

    return [NSString stringWithFormat:@"%d",-age];

}

 

 

-(NSString *)birthdayStrFromIdentityCard:(NSString *)numberStr

{

    NSMutableString *result = [NSMutableString stringWithCapacity:0];

    NSString *year = nil;

    NSString *month = nil;

    

    BOOL isAllNumber = YES;

    

    NSString *day = nil;

    if([numberStr length]<18)

        return result;

    

    

    

    //**从第6位开始 截取8个数

    NSString *fontNumer = [numberStr substringWithRange:NSMakeRange(6, 8)];

    

    

    //**检测前12位否全都是数字;

    const char *str = [fontNumer UTF8String];

    const char *p = str;

    while (*p!=‘\0‘) {

        if(!(*p>=‘0‘&&*p<=‘9‘))

            isAllNumber = NO;

        p++;

    }

    if(!isAllNumber)

        return result;

    

    

    year = [NSString stringWithFormat:@"19%@",[numberStr substringWithRange:NSMakeRange(8, 2)]];

    //    NSLog(@"year ==%@",year);

    

    month = [numberStr substringWithRange:NSMakeRange(10, 2)];

    //    NSLog(@"month ==%@",month);

    day = [numberStr substringWithRange:NSMakeRange(12,2)];

    

    //    NSLog(@"day==%@",day);

    

    [result appendString:year];

    [result appendString:@"-"];

    [result appendString:month];

    [result appendString:@"-"];

    [result appendString:day];

    //    NSLog(@"result===%@",result);

    

    return result;

    

}

 

 

 

/**

 *  从身份证上获取性别

 */

-(NSString *)getIdentityCardSex:(NSString *)numberStr

{

    NSString *sex = @"";

    //获取18位 二代身份证  性别

    if (numberStr.length==18)

    {

        

        

        int sexInt=[[numberStr substringWithRange:NSMakeRange(16,1)] intValue];

        

        if(sexInt%2!=0)

        {

            NSLog(@"1");

            sex = @"男";

            

            

            

        }

        else

        {

            NSLog(@"2");

            sex = @"女";

        }

        

        

    }

    

    

    //  获取15位 一代身份证  性别

    

    if (numberStr.length==15)

    {

        

        

        int sexInt=[[numberStr substringWithRange:NSMakeRange(14,1)] intValue];

        

        if(sexInt%2!=0)

        {

            NSLog(@"1");

            sex = @"男";

            

            

            

        }

        else

        {

            NSLog(@"2");

            sex = @"女";

        }

        

        

    }

    

    return sex;

    

    

}

 

以上是关于用Java从任意给定的身份证号码中提取此人的出生日期的主要内容,如果未能解决你的问题,请参考以下文章

JAVA从控制台输入身份证号码,把生日用星号代替再打印出来

Excel自动从身份证中提取生日和性别

在EXCELL里输入身份证号后,怎样利用函数提取性别,生日呢?

EXCEL表格中 怎么用函数从身份证号获取出生日期,年龄、性别

java编程,关于身份证验证问题。求大神指点

pandas根据身份证计算年龄