给定代表某人生日的DateTime,我如何计算他们的年龄(以年为单位)?
当前回答
这里有一个DateTime扩展程序,它将年龄计算添加到DateTime对象。
public static class AgeExtender
{
public static int GetAge(this DateTime dt)
{
int d = int.Parse(dt.ToString("yyyyMMdd"));
int t = int.Parse(DateTime.Today.ToString("yyyyMMdd"));
return (t-d)/10000;
}
}
其他回答
要使用最近的年龄计算年龄:
var ts = DateTime.Now - new DateTime(1988, 3, 19);
var age = Math.Round(ts.Days / 365.0);
只需使用:
(DateTime.Now - myDate).TotalHours / 8766.0
当前日期-myDate=TimeSpan,获取总小时数并除以每年的总小时数,得到确切的年龄/月/日。。。
简单易读,方法互补
public static int getAge(DateTime birthDate)
{
var today = DateTime.Today;
var age = today.Year - birthDate.Year;
var monthDiff = today.Month - birthDate.Month;
var dayDiff = today.Day - birthDate.Day;
if (dayDiff < 0)
{
monthDiff--;
}
if (monthDiff < 0)
{
age--;
}
return age;
}
public string GetAge(this DateTime birthdate, string ageStrinFormat = null)
{
var date = DateTime.Now.AddMonths(-birthdate.Month).AddDays(-birthdate.Day);
return string.Format(ageStrinFormat ?? "{0}/{1}/{2}",
(date.Year - birthdate.Year), date.Month, date.Day);
}
这是一个非常简单的方法:
int Age = DateTime.Today.Year - new DateTime(2000, 1, 1).Year;
推荐文章
- 防止在ASP中缓存。NET MVC中使用属性的特定操作
- 转换为值类型'Int32'失败,因为物化值为空
- c#中有任何连接字符串解析器吗?
- 如何将python datetime转换为字符串,具有可读格式的日期?
- 在Linq中转换int到字符串到实体的问题
- 是否可以动态编译和执行c#代码片段?
- 创建自定义MSBuild任务时,如何从c#代码获取当前项目目录?
- MSBuild路径
- c#和Java的主要区别是什么?
- 在c#中创建一个特定时区的DateTime
- .NET中的属性是什么?
- csproj文件中的“Service Include”是干什么用的?
- 如何使用try catch进行异常处理是最佳实践
- 替换字符串中第一次出现的模式
- .NET中字节的字面后缀?