【发布时间】:2012-01-06 08:06:05
【问题描述】:
我想比较 2 个日期以确认它们之间的年数是 >= 18。例如,如果我的 2 个日期是 03-12-2011 和 03-12-1983,那么这应该通过验证,但是,如果我的 2 个日期是 03-12-2011 和 03-12-1995,那么这应该验证失败。
谁能帮帮我?
【问题讨论】:
-
DateTime类有几个方便的方法,你试过了吗?
标签: c#
我想比较 2 个日期以确认它们之间的年数是 >= 18。例如,如果我的 2 个日期是 03-12-2011 和 03-12-1983,那么这应该通过验证,但是,如果我的 2 个日期是 03-12-2011 和 03-12-1995,那么这应该验证失败。
谁能帮帮我?
【问题讨论】:
DateTime 类有几个方便的方法,你试过了吗?
标签: c#
检查 TimeSpan 结构: http://msdn.microsoft.com/en-us/library/system.timespan.aspx
【讨论】:
使用TimeSpan 结构。
TimeSpan span= dateSecond - dateFirst;
int days=span.Days;
//or
int years = (int) (span.Days / 365.25);
【讨论】:
希望这就是你要找的东西
public bool CheckDate(DateTime date1, DateTime date2)
{
return date1.AddYears(-18) < date2;
}
【讨论】:
创建两个 DateTime 对象并将它们相互减去。 结果是一个 DateTime 对象:
DateTime dt = new DateTime(2011, 12, 03);
DateTime dt2 = new DateTime(1983, 12, 03);
DateTime dt3 = dt - dt2;
现在您可以查看dt3.Year 之间的年数
【讨论】:
TimeSpan 没有年份属性。
使用时间跨度:
TimeSpan day = 03-12-2011 - 03-12-1983;
double year = day.TotalDays / 365.25;
if (year > 18)
{
}
也许你应该使用 DateTime.Now 而不是 03-12-2011
【讨论】:
我重新调整了您的问题标题和描述,使其更加清晰。根据我从您的原始帖子中收集到的信息,您正在寻找 年龄验证 功能。这是我会做的:
function VerifyAge(DateTime dateOfBirth)
{
DateTime now = DateTime.Today;
int age = now.Year - dateOfBirth.Year;
if (now.Month < dateOfBirth.Month || (now.Month == dateOfBirth.Month && now.Day < dateOfBirth.Day))
age--;
return age >= 18;
}
【讨论】:
这是一个检查年龄是否超过18岁的方法:
private bool IsMoreThan18(DateTime from, DateTime to)
{
int age = to.Year - from.Year;
if (from > to.AddYears(-age)) age--;
return age >= 18;
}
【讨论】:
DateTime zeroTime = new DateTime(1, 1, 1);
DateTime a = new DateTime(2008, 1, 1);
DateTime b = new DateTime(2016, 1, 1);
TimeSpan span = b - a;
// because we start at year 1 for the Gregorian
// calendar, we must subtract a year here.
int years = (zeroTime + span).Year - 1;
Console.WriteLine("Years elapsed: " + years);
引用Link
【讨论】: