如何计算2个日期之间的年数?

时间:2011-11-25 12:30:16

标签: c#

我想比较两个日期,以确认两年之间的年数为>= 18。例如,如果我的2个日期是03-12-201103-12-1983,那么这应该通过验证,但是,如果我的2个日期是03-12-201103-12-1995,那么这应该无法通过验证。< / p>

任何人都可以帮助我吗?

8 个答案:

答案 0 :(得分:15)

希望这就是你要找的东西

public bool CheckDate(DateTime date1, DateTime date2)
{
    return date1.AddYears(-18) < date2;
}

答案 1 :(得分:2)

我重复了你的问题标题&amp;描述使它更清楚一点。根据我从原始帖子中收集到的内容,您正在寻找年龄验证功能。这就是我要做的事情:

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; 
}

答案 2 :(得分:1)

使用TimeSpan结构。

TimeSpan span= dateSecond - dateFirst;
int days=span.Days;
//or
int years = (int) (span.Days / 365.25);

答案 3 :(得分:0)

答案 4 :(得分:0)

使用Timespan:

TimeSpan day = 03-12-2011 - 03-12-1983;
                double year = day.TotalDays / 365.25;

                if (year > 18)
                {

                }

也许你应该使用DateTime.Now

而不是03-12-2011

答案 5 :(得分:0)

这是一种检查年龄是否超过18岁的方法:

    private bool IsMoreThan18(DateTime from, DateTime to)
    {
        int age = to.Year - from.Year;
        if (from > to.AddYears(-age)) age--;
        return age >= 18;
    }

答案 6 :(得分:0)

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

答案 7 :(得分:-1)

创建两个DateTime对象并相互减去它们。 结果也是一个DateTime对象:

DateTime dt = new DateTime(2011, 12, 03);
DateTime dt2 = new DateTime(1983, 12, 03);
DateTime dt3 = dt - dt2;

现在,您可以查看dt3.Year之间的年数