Подтвердить что ты не робот

Проверьте, попадает ли экземпляр datetime между двумя другими объектами datetime

Я хотел бы знать простой алгоритм, чтобы проверить, находится ли данный экземпляр datetime между двумя другими экземплярами в C#.

Примечание:

Я просмотрел это Как проверить, существует ли данный объект datetime и между ними? два datetimes?, и это было для python и еще много для php. Большинство других вопросов касалось различий между ними.

Детали:

Я более конкретный о времени, дата не имеет значения для меня. Например, я получил запись DataBase для сотрудника, который работает между 10:00 Am - 9:00 Pm и мной, как главным [например], хотел бы знать, какой штат занят классом в данный момент, например 2:00 Pm. Теперь это вернет мне данные о персонале, которые участвуют в это время.

4b9b3361

Ответ 1

DateTime.Ticks будет учитывать время. Используйте .Ticks в DateTime, чтобы преобразовать даты в longs. Затем просто используйте простую, если stmt, чтобы увидеть, находится ли ваша целевая дата между ними.

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

Ответ 2

Простой сравнения > и

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

Если вы заботитесь только о времени:

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

Ответ 3

Вы можете использовать:

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
}

Ответ 4

Напишите себе вспомогательную функцию:

public static bool IsBewteenTwoDates(this DateTime dt, DateTime start, DateTime end)
{
    return dt >= start && dt <= end;
}

Затем позвоните:  .IsBewteenTwoDates(DateTime.Today, new DateTime (,));

Ответ 5

Вы можете использовать:

if (date >= startDate && date<= EndDate) { return true; }

Ответ 6

Это поможет.

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