朋友谈及身份证相关的信息,才了解到原来省份证号码中包含了年龄和性别。

这样在数据库中,就不必单独留字段存放它们了(不过,要根据具体情况来,要是读取频率较高,还是单独列出为好),这样顺带解决了年龄变更的问题。

程序仅仅为了实现这个功能,里面还是需要数据验证的,用户输入的信息,毕竟在猿类看来,都是“非法的”。废话不多说了,贴上我写的程序,还请路过的大神斧正:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks; namespace calculateAgeBirthdatSexDemo
{
public class Program
{
public static void Main(string[] args)
{
string identityCard = "32128119930718125X";//随便拼的,如有雷同,纯属搞怪哈
BirthdayAgeSex entity = new BirthdayAgeSex();
entity=GetBirthdayAgeSex(identityCard);
if (entity != null)
{
Console.WriteLine(entity.Birthday + "-----" + entity.Sex + "-----" + entity.Age);
}
Console.ReadLine();
} public static BirthdayAgeSex GetBirthdayAgeSex(string identityCard)
{
if (string.IsNullOrEmpty(identityCard))
{
return null;
}
else
{
if (identityCard.Length != && identityCard.Length != )//身份证号码只能为15位或18位其它不合法
{
return null;
}
} BirthdayAgeSex entity = new BirthdayAgeSex();
string strSex = string.Empty;
if (identityCard.Length == )//处理18位的身份证号码从号码中得到生日和性别代码
{
entity.Birthday = identityCard.Substring(, ) + "-" + identityCard.Substring(, ) + "-" + identityCard.Substring(, );
strSex = identityCard.Substring(, );
}
if (identityCard.Length == )
{
entity.Birthday = "" + identityCard.Substring(, ) + "-" + identityCard.Substring(, ) + "-" + identityCard.Substring(, );
strSex = identityCard.Substring(, );
} entity.Age = CalculateAge(entity.Birthday);//根据生日计算年龄
if (int.Parse(strSex) % == )//性别代码为偶数是女性奇数为男性
{
entity.Sex = "女";
}
else
{
entity.Sex = "男";
}
return entity;
} /// <summary>
/// 根据出生日期,计算精确的年龄
/// </summary>
/// <param name="birthDate">生日</param>
/// <returns></returns>
public static int CalculateAge(string birthDay)
{
DateTime birthDate=DateTime.Parse(birthDay);
DateTime nowDateTime=DateTime.Now;
int age = nowDateTime.Year - birthDate.Year;
//再考虑月、天的因素
if (nowDateTime.Month < birthDate.Month || (nowDateTime.Month == birthDate.Month && nowDateTime.Day < birthDate.Day))
{
age--;
}
return age;
} /// <summary>
/// 定义 生日年龄性别 实体
/// </summary>
public class BirthdayAgeSex
{
public string Birthday { get; set; }
public int Age { get; set; }
public string Sex { get; set; }
}
}
}

(ps:多年前写的了,今天看了下,确实很水啊。。。。)

C#根据身份证号码,计算生日、年龄、性别的更多相关文章

  1. java 根据身份证号码获取出生日期、性别、年龄

      1.情景展示 如何根据身份证号,计算出出生日期.性别.年龄? 2.解决方案 从网上找的别人的,因为并没有实际用到,所以并未对其优化! /** * 通过身份证号码获取出生日期.性别.年龄 * @pa ...

  2. [VBA]根据身份证号码计算年龄的Excel函数

    是的,昨天刚发表了一篇和Excel自定义函数有关的博客,今天又一篇,有凑数的嫌疑.但是,保存知识和传播知识本来就是写博客的初衷,所以也并不多余. 如果不知道什么是Excel自定义函数,请移步这里[1] ...

  3. Excel自动从身份证中提取生日、性别、年龄

    现在学生的身份证号已经全部都是18位的新一代身份证了,里面的数字都是有规律的.前6位数字是户籍所在地的代码,7-14位就是出生日期.第17位“2”代表的是性别,偶数为女性,奇数为男性.我们要做的就是把 ...

  4. python 根据生日计算年龄 sqlalchemy根据身份证号计算生日 性别

    import datetime '): birth_d = datetime.datetime.strptime(birth_s, "%Y%m%d") today_d = date ...

  5. oracle根据身份证号码 计算年龄、性别

    一.Oracle根据身份证判断性别: 女生身份证: 431382198103246985 男生身份证: 150921197208173492 SQL语句如下:   select decode(mod ...

  6. php根据身份证号码计算年龄

    代码如下 复制代码 <?php function getAgeByID($id){         //过了这年的生日才算多了1周岁         if(empty($id)) return ...

  7. mysql 中通过身份证号码计算年龄

    SELECT DATE_FORMAT(NOW(), '%Y') - SUBSTRING( '换成对应身份证',7,4) AS age

  8. sql 根据身份证号码计算年龄

    ,), GETDATE()) / 365.25) from ConstructionInfo

  9. EXCEL计算根据当前时间和身份证号计算准确年龄

    假设身份证号在A2单元格 =IF(MONTH(NOW())<MONTH(DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2))),INT(YEAR(NOW())- ...

随机推荐

  1. HK一行所见闻

    香港一行 20多年来,未未去过HK,前段时间由于工作关系去了趟HK.感触良多. 一清早,福田过关,做火车,做地铁,一通到了目的地. 总结对那边的印象: 1,所有人都是粤语,包括工作交流.而且他们不怎么 ...

  2. WindowsPhone技术和XNA技术

    介于公司目前还没有涉及WP(WindowsPhone)项目的开发,而我本身是学习WP开发的,因此在这里稍微入门的介绍一点WP的知识. 一.简介 Windows Phone具有桌面定制.图标拖拽.滑动控 ...

  3. 使用Ivy管理项目中的依赖

    Ivy是什么 Ivy是一个跟踪管理项目直接以来关系的工具.Ivy具有良好的灵活性和可配置性,使其可以适应各种不同的依赖管理和构建过程要求:虽然Ivy作为依赖管理工具,其可以与Apache Ant进行紧 ...

  4. Snmp协议应用-扫描局域网内打印机

    .h2cls { background: #6fa833 none repeat scroll 0 0 !important; color: #fff; font-family: "微软雅黑 ...

  5. ASP.NET 开发必备知识点(1):如何让Asp.net网站运行在自定义的Web服务器上

    一.前言 大家都知道,在之前,我们Asp.net 的网站都只能部署在IIS上,并且IIS也只存在于Windows上,这样Asp.net开发的网站就难以做到跨平台.由于微软的各项技术的开源,所以微软自然 ...

  6. C语言#自动生成四则运算的编程

    #include <iostream> #include <stdio.h> #include <stdlib.h> #include <time.h> ...

  7. 在Mongoose中使用嵌套的populate处理数据

    假设有如下mongodb的schema定义: drawApply = new Schema({ salesId: { type: Schema.ObjectId, ref: 'sales' }, mo ...

  8. Linux gcc的安装

    说明:我是在虚拟机里学习的Linux,很多问题也是和虚拟机有关的.今天就遇到了虚拟机安装gcc是一个问题. 首先查看gcc是否安装: 然后安装gcc.(我的错误就出现在这里.) 我用的虚拟机,练习平时 ...

  9. 翻译:AKKA笔记 - Actor消息 -1(一)

    从第一篇Akka笔记的介绍中,我们是从很高的高度去观察Akka工具箱中的Actors.在这篇笔记的第二篇,我们会看一下Actors中的消息部分.而且延续上一次的例子,我们还会使用同样的学生与老师的例子 ...

  10. 01- Shell脚本学习--入门

    简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把它们称作一种Shell.我们常说有多少 ...