Compruebe si la instancia de fecha y hora se encuentra entre otros dos objetos de fecha y hora

Me gustaría saber un algoritmo simple para verificar si la instancia dada de datetime encuentra entre otras dos instancias en C# .

Nota:

Sin embargo, revisé esto ¿Cómo puedo verificar si un objeto datetime determinado está “entre” dos fechas y horas? y fue para python y muchos más para php. La mayoría de las otras preguntas se referían a la diferencia entre los dos.

Detalles:

Soy más específico sobre el tiempo, la fecha no me importa. Por ejemplo, obtuve la entrada de DataBase para un personal que trabaja entre las 10:00 a.m. – las 9:00 p.m. y a mí como director [por ejemplo] me gustaría saber qué personal está participando en clase en el momento dado, como a las 2:00 Pm Ahora esto me devolvería los detalles del personal que están comprometidos en este momento.

DateTime.Ticks representará la hora. Use .Ticks en DateTime para convertir sus fechas en longs. Entonces simplemente use un stmt simple para ver si su fecha objective se encuentra entre.

 // Assuming you know d2 > d1 if (targetDt.Ticks > d1.Ticks && targetDt.Ticks < d2.Ticks) { // targetDt is in between d1 and d2 } 

Haga una comparación simple> y <.

 if (dateA>dateB && dateA 

Si te importa solo a tiempo:

 if (dateA.TimeOfDay>dateB.TimeOfDay && dateA.TimeOfDay 

Puedes usar:

 if ((DateTime.Compare(dateToCompare, dateIn) == 1) && (DateTime.Compare(dateToCompare, dateOut) == 1) { //do code here } 

o

 if ((dateToCompare.CompareTo(dateIn) == 1) && (dateToCompare.CompareTo(dateOut) == 1)) { //do code here } 

Esto ayudará con seguridad.

 public static int year1, year2, year3, month1, month2, month3, day1, day2, day3; public static string dateA, dateB, dateC; static bool iswithindaterange(string dateA, string dateB, string dateC) { month1 = Convert.ToInt32((dateA.Split('/'))[0]); // Splits the value of the string on the '/' into month , day and year day1 = Convert.ToInt32((dateA.Split('/'))[1]); year1 = Convert.ToInt32((dateA.Split('/'))[2]); month2 = Convert.ToInt32((dateB.Split('/'))[0]); day2 = Convert.ToInt32((dateB.Split('/'))[1]); year2 = Convert.ToInt32((dateB.Split('/'))[2]); month3 = Convert.ToInt32((dateC.Split('/'))[0]); day3 = Convert.ToInt32((dateC.Split('/'))[1]); year3 = Convert.ToInt32((dateC.Split('/'))[2]); DateTime startdate = new DateTime(year1, month1, day1); DateTime enddate = new DateTime(year2, month2, day2); DateTime checkdate = new DateTime(year3, month3, day3); if (checkdate >= startdate && checkdate <= enddate) { return true; } else { return false; } } static void Main(string[] args) { dateA = "1/22/2016"; // Date Format (MM/dd/YYYY) dateB = "9/20/2016"; dateC = "5/18/2016"; bool answer; answer = iswithindaterange(dateA, dateB, dateC); if (answer == true) { Console.WriteLine("True"); } else { Console.WriteLine("False"); } }