¿Cómo comparar DateTime en C #?

No quiero que el usuario proporcione la fecha o la hora posterior.

¿Cómo puedo comparar si la fecha y hora introducidas son MENOS que la hora actual?

Si la fecha y hora actuales son 17-jun-2010, 12:25 p.m., quiero que el usuario no pueda dar la fecha antes del 17 de junio -2010 y la hora anterior a las 12:25 p.m.

Al igual que mi función, devuelva false si la hora ingresada por el usuario es 16-jun-2010 y la hora 12:24 PM

MSDN: DateTime.Compare

DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0); DateTime date2 = new DateTime(2009, 8, 1, 12, 0, 0); int result = DateTime.Compare(date1, date2); string relationship; if (result < 0) relationship = "is earlier than"; else if (result == 0) relationship = "is the same time as"; else relationship = "is later than"; Console.WriteLine("{0} {1} {2}", date1, relationship, date2); // The example displays the following output: // 8/1/2009 12:00:00 AM is earlier than 8/1/2009 12:00:00 PM 

Microsoft también implementó los operadores ” ‘y’> ‘. Entonces los usa para comparar dos fechas.

 if (date1 < DateTime.Now) Console.WriteLine("Less than the current time!"); 

La respuesta de MuSTaNG lo dice todo, pero aún lo sigo añadiendo para hacerlo un poco más elaborado, con enlaces y todo.


Los operadores convencionales

  • mayor que ( > ) ,
  • menos de ( < ) ,
  • igualdad ( == ) ,
  • y más

están disponibles para DateTime desde .NET Framework 1.1. Además, también es posible sumr y restar objetos DateTime con los operadores convencionales + y - .

Un ejemplo de MSDN:

Igualdad:

 System.DateTime april19 = new DateTime(2001, 4, 19); System.DateTime otherDate = new DateTime(1991, 6, 5); // areEqual gets false. bool areEqual = april19 == otherDate; otherDate = new DateTime(2001, 4, 19); // areEqual gets true. areEqual = april19 == otherDate; 

Otros operadores pueden usarse de la misma manera.

Aquí está la lista de todos los operadores disponibles para DateTime .

 //Datetime compare. private int CompareTime(string t1, string t2) { TimeSpan s1 = TimeSpan.Parse(t1); TimeSpan s2 = TimeSpan.Parse(t2); return s2.CompareTo(s1); } 
 public static bool CompareDateTimes(this DateTime firstDate, DateTime secondDate) { return firstDate.Day == secondDate.Day && firstDate.Month == secondDate.Month && firstDate.Year == secondDate.Year; }