检查date时间实例是否落入其他两个date时间对象之间

我想知道一个简单的algorithm来检查给定的datetime时间实例是否在C#另外两个实例之间。

注意:

我虽然浏览了这个如何检查给定的date时间对象是“之间”两个date时间? 这是python和更多的PHP。 其他问题大部分是关于两者之间的差异。

细节:

我对时间更具体,date对我无关紧要。 例如,我在10:002:00 Pm 9:00之间工作的一个工作人员的DataBase条目,例如,我想知道哪些员工在给定的时间从事上课,如2:00 Pm 。 现在,这将返回我在这个时候正在从事的工作人员的细节。

DateTime.Ticks将考虑时间。 在DateTime上使用.Ticks将date转换为长整型。 那么只需使用一个简单的如果stmt来看看你的目标date之间。

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

做简单的比较>和<。

 if (dateA>dateB && dateA<dateC) //do something 

如果你只关心时间:

 if (dateA.TimeOfDay>dateB.TimeOfDay && dateA.TimeOfDay<dateC.TimeOfDay) //do something 

您可以使用:

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

要么

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

这将有助于确保。

 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"); } }