DateTime比较问题

时间:2010-03-11 12:03:26

标签: c# .net datetime

我必须比较linq查询中的三个日期(datetime a< datetime b< datetime c),但只是属性月和日。我该怎么做?

2 个答案:

答案 0 :(得分:3)

这就是你要找的东西:

(a.Month < b.Month || (a.Month == b.Month && a.Day < b.Day)) && (b.Month < c.Month || (b.Month == c.Month && b.Day < c.Day))

答案 1 :(得分:3)

您可以使用当前年份创建新的日期时间:

var year = DateTime.Now.Year;
var dateATemp = new DateTime(year, dateA.Month, dateA.Day);
var dateBTemp = new DateTime(year, dateB.Month, dateB.Day);
var dateCTemp = new DateTime(year, dateC.Month, dateC.Day);

现在比较dateATemp&lt; dateBTemp&lt; dateCTemp

您可以从DateTime编写一个扩展方法,它将返回一个当前年份的新DateTime实例:

public static DateTime ToDateTimeWithCurrentYear(this DateTime value)
{
    return new DateTime(DateTime.Now.Year, value.Month, value.Day);
}

并像这样使用它:

dateA.ToDateTimeWithCurrentYear() < dateB.ToDateTimeWithCurrentYear() < dateC.ToDateTimeWithCurrentYear()