年龄计算

新手一枚,主要记录自己开发过程。如有错误请留言告知!

业务需求:根据身份证号码计算出年龄,如果直接传生日过来那更方便些。

        /// <summary>
        /// 计算年龄
        /// </summary>
        /// <param name="idCardNumber">身份证号</param>
        /// <returns>年龄</returns>
        public static string GetAge( string idCardNumber)
        {
            int yaer = int.Parse(idCardNumber.Substring(6,4)); // 获取年
            int month = int.Parse(idCardNumber.Substring(10,2));// 获取月
            int day = int.Parse(idCardNumber.Substring(12, 2));// 获取日
            var birthdayDate =  new DateTime(yaer, month, day);  // 转DateTime
            var nowDate =DateTime.Now; // 当前日期
            yaer = nowDate.Year - birthdayDate.Year; // 相差年
            month = nowDate.Month - birthdayDate.Month; // 相差月
            day = nowDate.Day - birthdayDate.Day; // 相差天
            int age = 0; // 年龄
            if(yaer < 0)
            {
                throw new ParamenterException("生日必需晚于当前日期");
            }
            if (month < 0) // 当前月小于生日月,未过生日(比如:现在6月,生日是7月)
            {
                age = yaer -1; // 相差-1 
            }
            else if (month == 0) // 当前月等于生日月,本月生日,判断是否为生日当天(比如:现在6月,生日是6月)
            {
                if (day < 0) // 当前日数小于生日当天,未过生日(比如:现在6月28,生日是6月30)
                {
                    age = yaer - 1; // 相差年-1 
                }
                else // 等于或大于,正在过或者已过生日
                {
                    age = yaer; 
                }

            }
            else // 当前月大于生日月(比如:现在6月,生日是5月) 已过生日
            {
                age = yaer;
            }
            return age.ToString();
        }

以上是C#代码,其实和Java没什么区别,相信大家都能看懂。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值