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

use*_*398 7 c# comparison datetime

我有以下代码如下.它适用于大多数情况,但今天我一个场景,其中的expiration_date就是09/30/2017 00:00:00不到currentDateTime这是在string10/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"));
  }
Run Code Online (Sandbox Code Playgroud)

Ami*_*san 14

比较日期时间,就像比较数字一样

DateTime expiration_date = newVer.License.Status.Expiration_Date;
DateTime currentDateTime = DateTime.Now;
if( expiration_date < currentDateTime)
{
   // expired 
}
Run Code Online (Sandbox Code Playgroud)

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

  DateTime expiration_date = newVer.License.Status.Expiration_Date.Date;
  DateTime currentDateTime = DateTime.Now.Date;
Run Code Online (Sandbox Code Playgroud)

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

int daydiff = (int)((currentDateTime - expiration_date).TotalDays)
Run Code Online (Sandbox Code Playgroud)

  • 这是一种微不足道的评论,但如果if(expiration_date> currentDateTime)那么它仍然有效.我的意思是较旧的日期小于最近的日期:) (2认同)