C# bonne méthode pour comparer 2 date heure

J'ai mes codes suivants comme ci-dessous. Il fonctionne dans la plupart scénario, mais aujourd'hui, j'ai un scénario où le expiration_date est 09/30/2017 00:00:00 est à moins de currentDateTime qui est en string comme 10/15/2016 14:34:19? Qu'est-ce que le bug de mon côté je viens de comparer, comme 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"));
  }
  • Vous devriez comparer directement les dates au lieu de les convertir en chaînes. Si vous insistez toujours sur la conversion de chaînes de caractères avant la comparaison, vous devez utiliser un format qui sera de plus en plus avec l'augmentation de la date c'est à dire "yyyy/MM/dd HH:mm:ss"
  • Il n'est pas nécessaire de insist de convertir des dates dans les chaînes de comparer deux dates. En fait est "plus lent" en raison de la conversion. Ne pas changer le domaine d'une valeur, à moins que vous ne peut pas faire autrement.
InformationsquelleAutor user5313398 | 2016-10-15