如何在C#中检查一个DateTime是否比另一个更大

Bri*_*n G 96 c#

我有两个DateTime对象:StartDate和EndDate.我想确定StartDate是在此之前EndDate.这是如何在C#中完成的?

Dar*_*opp 194

if (StartDate < EndDate)
   // code
Run Code Online (Sandbox Code Playgroud)

如果你只想要日期,而不是时间

if (StartDate.Date < EndDate.Date)
    // code
Run Code Online (Sandbox Code Playgroud)


Rya*_*ldi 26

if(StartDate < EndDate)
{}
Run Code Online (Sandbox Code Playgroud)

DateTime支持普通的比较运算符.


Jon*_*way 23

if(dateTimeA > dateTimeB) Console.WriteLine("Do your own homework");
Run Code Online (Sandbox Code Playgroud)


Ben*_*ein 23

您可以使用重载的<或>运算符.

例如:

DateTime d1 = new DateTime(2008, 1, 1);
DateTime d2 = new DateTime(2008, 1, 2);
if (d1 < d2) { ...
Run Code Online (Sandbox Code Playgroud)


Ian*_*son 8

if (StartDate>=EndDate)
{
    throw new InvalidOperationException("Ack!  StartDate is not before EndDate!");
}
Run Code Online (Sandbox Code Playgroud)


rot*_*ana 6

这可能为时已晚,但为了让其他可能偶然发现此问题的人受益,我使用了一个扩展方法来解决这个IComparable问题:

public static class BetweenExtension
    {
        public static bool IsBetween<T>(this T value, T min, T max) where T : IComparable
        {
            return (min.CompareTo(value) <= 0) && (value.CompareTo(max) <= 0);
        }
    }
Run Code Online (Sandbox Code Playgroud)

使用此扩展方法IComparable使此方法更通用,并使其可用于多种数据类型,而不仅仅是日期。

你会像这样使用它:

DateTime start = new DateTime(2015,1,1);
DateTime end = new DateTime(2015,12,31);
DateTime now = new DateTime(2015,8,20);

if(now.IsBetween(start, end))
{
     //Your code here
}
Run Code Online (Sandbox Code Playgroud)


Evi*_*die 5

查看DateTime.Compare方法