我想知道一个简单的算法来检查datetime
的给定实例是否位于C#
中的另外两个实例之间。
注意:
我浏览了这个How do I check if a given datetime object is "between" two datetimes?,它用于python,还有更多用于php。大多数其他问题都是关于两者之间的差异。
详细信息:
我对时间更具体,日期对我来说无关紧要。例如,我在DataBase
Am - 10:00
Pm和我之间工作的工作人员获得了9:00
条目作为校长[例如]想知道哪些工作人员在给定的课堂上工作时间如2:00 Pm
。现在,这将返回我当时参与的工作人员的详细信息。
答案 0 :(得分:76)
DateTime.Ticks将占用时间。在DateTime上使用.Ticks将日期转换为long。然后只需使用简单的if stmt来查看您的目标日期是否介于。
之间// Assuming you know d2 > d1
if (targetDt.Ticks > d1.Ticks && targetDt.Ticks < d2.Ticks)
{
// targetDt is in between d1 and d2
}
答案 1 :(得分:46)
做简单比较&gt;和&lt;。
if (dateA>dateB && dateA<dateC)
//do something
如果您只关心时间:
if (dateA.TimeOfDay>dateB.TimeOfDay && dateA.TimeOfDay<dateC.TimeOfDay)
//do something
答案 2 :(得分:0)
您可以使用:
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
}
答案 3 :(得分:0)
为自己编写一个助手功能:
sidebar
然后致电: .IsBewteenTwoDates(DateTime.Today,new DateTime(,,));
答案 4 :(得分:0)
您可以使用:
if (date >= startDate && date<= EndDate) { return true; }
答案 5 :(得分:-2)
这肯定会有所帮助。
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");
}
}