Cómo comparar fechas en c #

Tengo dos fechas. Se ingresa una fecha y la otra es DateTime.Now . Los tengo en formato mm/dd/yyyy , incluso puede ser también formato m / d / aa. Ambas fechas son anulables, es decir, ¿datatype es DateTime? , ya que puedo pasar null también como entrada. Ahora quiero comparar las dos fechas solo con el formato mm/dd/yyyy o m/d/yy .

Si tiene sus fechas en las variables DateTime, no tienen un formato.

Puede usar la propiedad Date para devolver un valor DateTime con la porción de tiempo configurada a la medianoche. Entonces, si tienes:

 DateTime dt1 = DateTime.Parse("07/12/2011"); DateTime dt2 = DateTime.Now; if(dt1.Date > dt2.Date) { //It's a later date } else { //It's an earlier or equal date } 

Si tiene fecha en la variable DateTime , entonces es un objeto DateTime y no contiene ningún formato. La fecha formateada se expresa como una string cuando llama al método DateTime.ToString y proporciona un formato.

Digamos que tiene dos variables DateTime , puede usar el método de comparación para comparar

 DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0); DateTime date2 = new DateTime(2009, 8, 2, 0, 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"; 

Fragmento de código tomado de msdn .

En primer lugar, comprenda que los objetos DateTime no están formateados. Simplemente almacenan el año, mes, día, hora, minuto, segundo, etc. como un valor numérico y el formato se produce cuando desea representarlo como una cadena de alguna manera. Puede comparar objetos DateTime sin formatearlos.

Para comparar una fecha de entrada con DateTime.Now , primero necesita analizar la entrada en una fecha y luego comparar solo las porciones de Año / Mes / Día:

 DateTime inputDate; if(!DateTime.TryParse(inputString, out inputDate)) throw new ArgumentException("Input string not in the correct format."); if(inputDate.Date == DateTime.Now.Date) { // Same date! }