usar switch sentencia saber resueltos por para otro numero multiplo ejemplos divisor divisible como algoritmo c#

switch - Cómo comprobar si un DateTime es más tarde que otro en C#



sentencia switch en c++ (11)

Tengo dos objetos DateTime : StartDate y EndDate . Quiero asegurarme de que StartDate sea ​​antes de EndDate . ¿Cómo se hace esto en C #?


Consulte el método DateTime.Compare


Me gustaría demostrar que si convierte a .Fecha, no necesita preocuparse por horas / minutos / segundos, etc.

[Test] public void ConvertToDateWillHaveTwoDatesEqual() { DateTime d1 = new DateTime(2008, 1, 1); DateTime d2 = new DateTime(2008, 1, 2); Assert.IsTrue(d1 < d2); DateTime d3 = new DateTime(2008, 1, 1,7,0,0); DateTime d4 = new DateTime(2008, 1, 1,10,0,0); Assert.IsTrue(d3 < d4); Assert.IsFalse(d3.Date < d4.Date); }


Probablemente sea demasiado tarde, pero para beneficiar a otras personas que puedan tropezar con esto, utilicé un método de extensión para hacer esto usando IComparable esta manera:

public static class BetweenExtension { public static bool IsBetween<T>(this T value, T min, T max) where T : IComparable { return (min.CompareTo(value) <= 0) && (value.CompareTo(max) <= 0); } }

El uso de este método de extensión con IComparable hace que este método sea más genérico y lo hace utilizable con una amplia variedad de tipos de datos y no solo fechas.

Lo usarías así:

DateTime start = new DateTime(2015,1,1); DateTime end = new DateTime(2015,12,31); DateTime now = new DateTime(2015,8,20); if(now.IsBetween(start, end)) { //Your code here }


Puede usar los operadores <o> sobrecargados.

Por ejemplo:

DateTime d1 = new DateTime(2008, 1, 1); DateTime d2 = new DateTime(2008, 1, 2); if (d1 < d2) { ...


Tenía el mismo requisito, pero al usar la respuesta aceptada, no cumplía todas las pruebas de mi unidad. El problema para mí es cuando tienes un objeto nuevo, con fechas de inicio y finalización y tienes que establecer la fecha de inicio (en esta etapa tu fecha de finalización tiene el valor de fecha mínimo 01/01/0001) - esta solución pasó todo mi unidad prueba:

public DateTime Start { get { return _start; } set { if (_end.Equals(DateTime.MinValue)) { _start = value; } else if (value.Date < _end.Date) { _start = value; } else { throw new ArgumentException("Start date must be before the End date."); } } } public DateTime End { get { return _end; } set { if (_start.Equals(DateTime.MinValue)) { _end = value; } else if (value.Date > _start.Date) { _end = value; } else { throw new ArgumentException("End date must be after the Start date."); } } }

Se pierde el caso límite donde las fechas de inicio y finalización pueden ser 01/01/0001 pero no me preocupa eso.


if (new DateTime(5000) > new DateTime(1000)) { Console.WriteLine("i win"); }


StartDate < EndDate


if (StartDate < EndDate) // code

si solo quieres las fechas, y no el momento

if (StartDate.Date < EndDate.Date) // code


if (StartDate>=EndDate) { throw new InvalidOperationException("Ack! StartDate is not before EndDate!"); }


if(StartDate < EndDate) {}

DateTime admite operadores de comparación normales.


if(dateTimeA > dateTimeB) Console.WriteLine("Do your own homework");