代码之家  ›  专栏  ›  技术社区  ›  janhartmann

相隔一年的两个日期

  •  3
  • janhartmann  · 技术社区  · 15 年前

    我有两个日期,如何检查两个日期是否都不超过一年?

    8 回复  |  直到 15 年前
        1
  •  20
  •   Joel Coehoorn    15 年前
    if (Math.Abs((d1 - d2).TotalDays) < 365)
    

    编辑:

    if ( d1 <= d2 && d1.AddYears(1) >= d2 || d2 < d1 && d2.AddYears(1) > d1)
    

    更新:

    if (d1 < d2 ? d2 < d1.AddYears(1) : d1 < d2.AddYears(1)) 
    
        2
  •  2
  •   Ricardo Felgueiras    15 年前

    我举一个小例子:

    DateTime startTime = DateTime.Now;
    
     DateTime endTime = DateTime.Now.AddSeconds( 75 );
    
     TimeSpan span = endTime.Subtract ( startTime );
     Console.WriteLine( "Time Difference (seconds): " + span.Seconds );
     Console.WriteLine( "Time Difference (minutes): " + span.Minutes );
     Console.WriteLine( "Time Difference (hours): " + span.Hours );
     Console.WriteLine( "Time Difference (days): " + span.Days );
    
        3
  •  0
  •   Serapth    15 年前
    TimeSpan ts = Date1.Subtract(Date2);
    
    if(ts.Days > 365)
    {
    // Over a year.
    }
    
        4
  •  0
  •   pestaa    15 年前

    这取决于日期格式。

    • 如果有两个时间戳,可以计算它们之间的差异。
        5
  •  0
  •   ajma    15 年前

    如果它们都是DateTime结构,那么你可以减去它们得到一个 Timespan 结构Timespan结构具有 Days 您可以查看的属性。

    所以你会有这样的想法:

    if(Math.Abs((date1 - date2).Days) <= 365) ...
    
        6
  •  0
  •   Aric TenEyck    15 年前

    if(t1.AddYears(1) >= t2) {
        // t1 is within a year of t2
        return true;
    } else {
        // t1 is not within a year of t2
        return false;
    }
    
        7
  •  0
  •   Community CDub    7 年前

    "how do I calculate someone's age" .

    明目张胆地从那里窃取答案并修改以供使用:

    public static bool DatesAreWithinOneYear(DateTime date1, DateTime date2)
    {
        DateTime startDate = date2 > date1 ? date1 : date2;
        DateTime endDate = date2 > date1 ? date2 : date1;
    
        int years = endDate.Year - startDate.Year;
        if (endDate < startDate.AddYears(years))
        {
            years--;
        }
        return years < 1;
    }
    
        8
  •  -2
  •   TheTXI    15 年前
    if (year(date1) == year(date2))
    {
       //true
    }
    else
    {
       //false
    }