比较C#中的未来日期

时间:2010-01-09 19:55:42

标签: c# .net datetime

我知道这可能是一个非常简单的问题,但我正在尝试编写一个函数,如果将来通过的日期将返回bool值“true”,如下所示:

bool IsFutureDate(System.DateTime refDate)
{
    if (refDate > DateTime.Now)  // This doesn't seem to work
        return true;
    return false;
}

有人告诉我谁写这样的功能实际上有用吗?

由于

4 个答案:

答案 0 :(得分:5)

我唯一能想到的是,如果refDate ==今天你可能会得到未定义的行为。

DateTime.Now包含时间。如果refDate如果今天在3:00说,你在2:00运行它将返回true。如果你在4:00运行,它将返回false。

将它与DateTime.Today进行比较,这只会返回日期,从而防止影响它的时间。

除此之外它应该都很好..

答案 1 :(得分:3)

DateTime处理总是很棘手。

我总结了到目前为止所提到的内容,并将此帖发布在社区Wiki上。

时区处理

static bool IsFutureDateTime(DateTime dateTime) {
   // NOTE: ToUniversalTime() treats DateTimeKind.Unspecified as local time. We
   //       therefore insist that the input kind is always specified.
   if (dateTime.Kind == DateTimeKind.Unspecified) {
       string msg = "dateTime.Kind must not be DateTimeKind.Unspecified.";
       throw new ArgumentException(msg, "dateTime");
   }

   return dateTime.ToUniversalTime() > DateTime.UtcNow;
}

仅比较日期

static bool IsFutureDate(DateTime date) {
    return date.Date > DateTime.Today;
}

答案 2 :(得分:0)

bool IsFutureDate(DateTime refDate) {
    DateTime today = DateTime.Today;
    return (refDate.Date != today) && (refDate > today);
}

答案 3 :(得分:0)

TimeSpan结构很有用:

http://msdn.microsoft.com/en-us/library/system.timespan.aspx

您需要多精确度?降到毫秒?