/// <summary> /// 年龄等于入院时间减出生日期(误差范围1岁) /// </summary> /// <param name="B12">入院时间(B12)</param> /// <param name="A13">出生日期(A13)</param> /// <param name="A14">年龄(A14)</param> public void VaildError6(DateTime A13, DateTime B12 , int A14) { if (A13 > B12) throw new Exception("开始时间应小于或等与结束时间!"); DateTime startDate = A13; // 开始日期 DateTime endDate = B12; // 结束日期 int monthsApart = (endDate.Month - startDate.Month) + 12 * (endDate.Year - startDate.Year); Console.WriteLine("相差的月份为:" + monthsApart); // 输出相差的月份 double nianling = monthsApart * 0.1 / 12; // 误差绝对值 大于1 if(Math.Abs( nianling - A14) > 1) { } }
时间: 2024-02-14 17:07:16 浏览: 165
GNU/Linux Command−Line Tools Summary
这段代码是一个验证函数,主要是用于验证一个人的年龄是否等于入院时间减出生日期,误差范围为1岁。如果误差大于1岁,则会抛出异常。
具体实现方法如下:
1. 首先判断开始时间(出生日期)是否小于结束时间(入院时间),如果不是,抛出异常。
2. 计算出开始时间和结束时间之间相差的月份数,然后将月份数转换成年龄,计算公式为:年龄 = 相差月份 * 0.1 / 12。
3. 判断计算出来的年龄与传入的年龄参数的误差是否大于1岁,如果大于1岁,则抛出异常。
代码实现如下:
```
public void VaildError6(DateTime A13, DateTime B12, int A14)
{
if (A13 > B12)
throw new Exception("开始时间应小于或等与结束时间!");
DateTime startDate = A13; // 开始日期
DateTime endDate = B12; // 结束日期
int monthsApart = (endDate.Month - startDate.Month) + 12 * (endDate.Year - startDate.Year);
double nianling = monthsApart * 0.1 / 12;
// 误差绝对值 大于1
if (Math.Abs(nianling - A14) > 1)
{
throw new Exception("年龄不符合要求!");
}
}
```
注意,这里的年龄计算是按照“相差月份 * 0.1 / 12”的公式计算的,这是因为一个月的天数并不是恒定的,所以按照天数计算年龄可能不太准确,而按照月份计算则更为精确。
阅读全文