检查一个日期时间是否在当前日期时间之前

26

我该如何使用某种形式的if语句检查特定的DateTime(在这种情况下称为dateAndTime1),是否早于当前日期和时间,我认为可以使用DateTime.Now进行检索?


http://msdn.microsoft.com/en-us/library/system.datetime.compare.aspx .. 是其中一种方法。正如其他人已经指出的那样,通常的比较运算符也可以使用。 - Robert Harvey
6
if (dateAndTime1 < DateTime.Now) 这段代码有什么问题吗?看起来太明显了,我可能漏掉了什么! - marc_s
3个回答

62
if(dateAndTime1 < DateTime.Now)
{
  //do something
}

7

<, <=, >, >= 和 == 操作符可用于 DateTime 实例,因此

if(dateAndTime1 < DateTime.Now)

请注意,如果您在循环中进行比较,可以通过在循环之前设置 DateTime now = DateTime.Now 并与 now 进行比较来获得一些小的效率提升。


1
根据您的注释:除了在长时间运行的进程中“现在”始终需要是立即的“DateTime.Now”之外,您是正确的。这是因为在设置“now”变量时,在长时间运行的进程中它将会过期...就像我说的那样,“边缘情况”,并且可能很少遇到。 - Chase Florell
实际上,正是因为这个原因,我更愿意使用在整个循环中保持一致的变量。显然,这取决于用例,但我可以想象,当向用户返回某个特定值集时,锚点几乎总是应该保持不变以获得一致的结果。 - downhand

2

行内样式也可以。

// bool variable
bool isHistory = dateAndTime1 < DateTime.Now;

// string return statement
return dateAndTime1 < DateTime.Now ? "History" : "Future";

4
为了让大家都受益,你例子中使用的表达式名称是三元表达式。 - Jim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接