}
catch
{
if (lastCount!="X")
{
MessageBox.Show("身份证号的最后一位只能是数字或X");
//flag改为false
flag = false;
return;
}
}
//得到出生年
byr = int.Parse(bornYear);
//得到出生月份
int month = int.Parse(num.Substring(10, 2));
//得到出生日
int day = int.Parse(num.Substring(12,2));
//判断月份是否在1到12
if ((month<1 || month>12))
{
MessageBox.Show("身份证号非法!");
//return是为了不执行下面代码
return;
}
//根据月份判断天数
switch (month)
{
case 2:
flag= day > 0 && day < 29;
break;
case 4:
case 6:
case 9:
case 11:
flag = day > 0 && day < 31;
break;
default:
flag = day > 0 && day <= 31;
break;
}
//判断出生出生年是否是闰年
if (((byr % 4) == 0 && (byr % 100 != 0)) || (byr % 400 == 0))
{
//如果是闰年2月有29天
flag = day > 0 && day <= 29;
}
//判断身份证号是否合法
if (flag != true)
{
MessageBox.Show("身份证号非法!");
//return是为了不执行下面代码
return;
}
if (flag==true)
{
int year = Convert.ToInt32(DateTime.Now.Year);
//判断年龄是否在1到100岁之间,假设100岁以上的不用身份证
if ((byr<year-100) || (byr>year))
{
MessageBox.Show("你的身份证号非法。");
}
int birthYear = int.Parse(sfz.Substring(6, 4));//取得出生年份,转成int型
int age = DateTime.Now.Year - birthYear; //计算年龄
Console.WriteLine("Age = " + age);作者: 曾玉锋 时间: 2013-4-3 16:03
using System.Text.RegularExepressions;
//身份证号码
string cardno = "511124199503203715";
//身份证号码的第7位开始到第11位数为出生年份,用正则表达式去匹配,如果身份证号码无误,则返回一个Match对象
Match mc=Regex.Match(cardno,@"^\d{6}(\d{4})\d{8}$");
//取得当前年份
int now = DateTime.Now.Year;
//获得出生年份
int birth=int.Parse(mc.Groups[1].Value);
//当前年份-出生年份=年龄
Console.WriteLine(now-birth);
Console.ReadKey();作者: 杞文明 时间: 2013-4-4 01:30
认真看一哈视频 视频就有这个题目!! 作者: 杞文明 时间: 2013-4-4 01:35
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 身份证判断是否可见图片
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private bool ShenFenPanDuane(string id) //判断十八位的身份证是否正确
{
int[] xishu = { 7 ,9 ,10, 5 ,8 ,4 ,2 ,1 ,6 ,3 ,7 ,9 ,10, 5 ,8 ,4 ,2};
string number17 = id.Substring(0, 17); //身份证的前17位
string number18 = id.Substring(17); //身份证的第18位
string checkwei = "10X98765432";
int sum = 0; //统计求和
for (int i = 0; i < 17; i++)
{
sum = sum + Convert.ToInt32(number17[i].ToString()) * xishu[i];
}
int mod = sum % 11;
string result = checkwei[mod].ToString();
if (number18.Equals(result, StringComparison.OrdinalIgnoreCase))
{
return true;
}
return false;
}