通过身份证号码获取性别,年龄

//根据身份证号性别

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

{

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

if(sexInt%2!=0)

{

return@"男";

}

else

{

return@"女";

}

}

//根据省份证号获取年龄

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

{

NSDateFormatter*formatterTow = [[NSDateFormatteralloc]init];

[formatter TowsetDateFormat:@"yyyy-MM-dd"];

NSString*dateStr = [self birthdayStrFromIdentityCard:numberStr];

NSDate*date = [formatter TowdateFromString:dateStr];

NSTimeInterval dateDiff = [date 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;

BOOLisAllNumber =YES;

NSString*day =nil;

if([numberStr length]<14)

return result;

//**截取前14位

NSString*fontNumer = [number StrsubstringWithRange:NSMakeRange(0,13)];

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

constchar*str = [fontNumer UTF8String];

constchar*p = str;

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

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

isAllNumber =NO;

p++;

}

if(!isAllNumber)

returnresult;

year = [numberStrsubstringWithRange:NSMakeRange(6,4)];

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

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

[resultappendString:year];

[resultappendString:@"-"];

[resultappendString:month];

[resultappendString:@"-"];

[resultappendString:day];

returnresult;

}

- (NSInteger)ageWithDateOfBirth:(NSDate*)date;

{

//出生日期转换年月日

NSDateComponents*components1 = [[NSCalendarcurrentCalendar]components:NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnitfromDate:date];

NSIntegerbrithDateYear= [components1year];

NSIntegerbrithDateDay= [components1day];

NSIntegerbrithDateMonth = [components1month];

//获取系统当前年月日

NSDateComponents*components2 = [[NSCalendarcurrentCalendar]components:NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnitfromDate:[NSDatedate]];

NSIntegercurrentDateYear= [components2year];

NSIntegercurrentDateDay= [components2day];

NSIntegercurrentDateMonth = [components2month];

//计算年龄

NSIntegeriAge = currentDateYear - brithDateYear -1;

if((currentDateMonth > brithDateMonth) || (currentDateMonth == brithDateMonth && currentDateDay >= brithDateDay)) {

iAge++;

}

returniAge;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的SimpleDateFormat类和Calendar类来实现按照身份证获取年龄、月份、天数和性别的功能。具体实现方法可以参考以下代码: ```java import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class IdCardUtil { /** * 根据身份证获取年龄、月份、天数和性别 * @param idCard 身份证号 * @return 返回一个数组,依次为年龄、月份、天数和性别 */ public static int[] getAgeMonthDaySexByIdCard(String idCard) { int[] result = new int[4]; if (idCard == null || idCard.length() != 18) { return result; } String birthdayStr = idCard.substring(6, 14); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); Date birthday = null; try { birthday = sdf.parse(birthdayStr); } catch (Exception e) { e.printStackTrace(); } if (birthday == null) { return result; } Calendar calendar = Calendar.getInstance(); calendar.setTime(birthday); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DAY_OF_MONTH); result[0] = getAge(year, month, day); result[1] = month; result[2] = day; result[3] = getSex(idCard); return result; } /** * 根据出生年月日计算年龄 * @param year 出生年份 * @param month 出生月份 * @param day 出生日期 * @return 返回年龄 */ private static int getAge(int year, int month, int day) { Calendar calendar = Calendar.getInstance(); int nowYear = calendar.get(Calendar.YEAR); int nowMonth = calendar.get(Calendar.MONTH) + 1; int nowDay = calendar.get(Calendar.DAY_OF_MONTH); int age = nowYear - year; if (nowMonth < month || (nowMonth == month && nowDay < day)) { age--; } return age; } /** * 根据身份证获取性别 * @param idCard 身份证号 * @return 返回性别,1表示男性,2表示女性 */ private static int getSex(String idCard) { int sex = 0; if (idCard.length() == 15) { sex = idCard.charAt(14) - '0'; } else if (idCard.length() == 18) { sex = idCard.charAt(16) - '0'; } if (sex % 2 == 0) { return 2; } else { return 1; } } } ``` 使用示例: ```java public class Test { public static void main(String[] args) { String idCard = "110101199003077890"; int[] result = IdCardUtil.getAgeMonthDaySexByIdCard(idCard); System.out.println("年龄:" + result[0]); System.out.println("月份:" + result[1]); System.out.println("天数:" + result[2]); System.out.println("性别:" + result[3]); } } ``` 输出结果: ``` 年龄:31 月份:3 天数:7 性别:1 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值