我知道这可能是一个非常简单的问题,但我正在尝试编写一个函数,如果将来通过的日期将返回bool值“true”,如下所示:
bool IsFutureDate(System.DateTime refDate)
{
if (refDate > DateTime.Now) // This doesn't seem to work
return true;
return false;
}
有人告诉我谁写这样的功能实际上有用吗?
由于
答案 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)