我有两个约会,如何检查这两个日期是否超过一年?
简短的问题! : - )
答案 0 :(得分:20)
if (Math.Abs((d1 - d2).TotalDays) < 365)
修改:这应该会更好地解释闰年。
if ( d1 <= d2 && d1.AddYears(1) >= d2 || d2 < d1 && d2.AddYears(1) > d1)
<强>更新强>
我更喜欢@JDunkerley的解决方案:
if (d1 < d2 ? d2 < d1.AddYears(1) : d1 < d2.AddYears(1))
答案 1 :(得分:2)
我举几个例子:
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 );
答案 2 :(得分:0)
TimeSpan ts = Date1.Subtract(Date2);
if(ts.Days > 365)
{
// Over a year.
}
答案 3 :(得分:0)
这取决于日期格式。
答案 4 :(得分:0)
如果它们都在DateTime结构中,那么您可以减去这两个结构以获得Timespan结构。 Timespan结构具有Days属性,您可以查看它。
所以你会有类似的东西:
if(Math.Abs((date1 - date2).Days) <= 365) ...
答案 5 :(得分:0)
这是与"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;
}
答案 6 :(得分:0)
如有必要,交换t1和t2,使t1 <= t2
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 :(得分:-2)
if (year(date1) == year(date2))
{
//true
}
else
{
//false
}