C#正确方法比较2个日期时间

时间:2016-10-15 06:46:40

标签: c# datetime comparison

我有以下代码如下。它适用于大多数情况,但今天我expiration_date 09/30/2017 00:00:00的{​​{1}}小于currentDateTime string 10/15/2016 14:34:19的情况?我只是比较string,我身边的错误是什么?

  System.DateTime expiration_date = newVer.License.Status.Expiration_Date;
  DateTime currentDateTime = DateTime.Now;
  currentDateTime.ToString("MM/dd/yyyy HH:mm:ss");
  int a = expiration_date.ToString("MM/dd/yyyy HH:mm:ss")
           .CompareTo(currentDateTime.ToString("MM/dd/yyyy HH:mm:ss"));
  //MessageBox.Show("int a is :" + a);
  if (expiration_date.ToString("MM/dd/yyyy HH:mm:ss")
          .CompareTo(currentDateTime.ToString("MM/dd/yyyy HH:mm:ss")) < 1)
  {
      crossDate = 1;               
      MessageBox.Show("Cross Date Alert"+ " Expiry Date Is :"+ 
                      expiration_date.ToString("MM/dd/yyyy HH:mm:ss") 
                      + "  "+"Current Date Is :"+
                      currentDateTime.ToString("MM/dd/yyyy HH:mm:ss"));
  }

5 个答案:

答案 0 :(得分:12)

比较日期时间,就像比较

之类的数字一样
DateTime expiration_date = newVer.License.Status.Expiration_Date;
DateTime currentDateTime = DateTime.Now;
if( expiration_date < currentDateTime)
{
   // expired 
}

如果您只需要日期而不是时间,请使用

  DateTime expiration_date = newVer.License.Status.Expiration_Date.Date;
  DateTime currentDateTime = DateTime.Now.Date;

您还可以使用两个日期的日差。

int daydiff = (int)((currentDateTime - expiration_date).TotalDays)

答案 1 :(得分:1)

比较日期示例:

            DateTime d1 = DateTime.Now;
            DateTime d2 = DateTime.Now.AddDays(1);

            if ( d2.CompareTo(d1)>0 )
                Console.WriteLine("d2>d1");
            else
                Console.WriteLine("d2<=d1");

答案 2 :(得分:1)

你的问题由两部分组成。可能会有更简单的事情,但是:

首先,将您的字符串转换为DateTime对象。 DateTime类有几种方法可以帮助解决这个问题。试试ParseExact。

然后,将DateTime对象转换为Unix时间戳。

现在,你有两个长整数,你可以比较,并将int比较转换为另一个DateTime,并从中获取东西。

答案 3 :(得分:1)

不要转换为字符串

        DateTime expiration_date = newVer.License.Status.Expiration_Date;

        if (expiration_date.CompareTo(DateTime.Now) < 1)
        {
            MessageBox.Show("Cross Date Alert"+ " Expiry Date Is :"+ expiration_date.ToString("MM/dd/yyyy HH:mm:ss") + "  "+"Current Date Is :"+ currentDateTime.ToString("MM/dd/yyyy HH:mm:ss"));
        }

答案 4 :(得分:0)

.NET为此提供了一种很棒的方法,可以使用DateTime.Compare()方法比较两个日期时间对象。 DateTime.Compare()方法采用2个datetime对象,并比较日期和时间或两者之一,并返回一个整数值。 DateTime.Compare()

我在这里用示例代码进行了演示:Comparing 2 DateTime objects in C#.