检查datetime实例是否属于其他两个datetime对象

时间:2011-04-15 05:49:40

标签: c# asp.net datetime timespan

我想知道一个简单的算法来检查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。现在,这将返回我当时参与的工作人员的详细信息。

6 个答案:

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