Если startTime
и endTime
представляют один интервал времени (это произойдет только один раз, а startTime
и endTime
представляют дату и время запуска / остановки), тогда это так же просто, как сказать
bool isTimeBetween = someTime >= startTime && someTime <= endTime;
Если это повторяющееся событие (происходит каждый день в течение некоторого интервала), вы можете выполнить сравнение, используя свойство TimeOfDay
. (Повторяющийся случай - это случай, когда вы должны рассмотреть старт / стоп, который пересекает полночь)
static public bool IsTimeOfDayBetween(DateTime time,
TimeSpan startTime, TimeSpan endTime)
{
if (endTime == startTime)
{
return true;
}
else if (endTime < startTime)
{
return time.TimeOfDay <= endTime ||
time.TimeOfDay >= startTime;
}
else
{
return time.TimeOfDay >= startTime &&
time.TimeOfDay <= endTime;
}
}
(Примечание. В этом коде предполагается, что если start == end
, то он охватывает все время. Вы сделали комментарий по этому поводу в другом сообщении)
Например, чтобы проверить, что это между 5 утра и 9:30 вечера
IsTimeOfDayBetween(someTime, new TimeSpan(5, 0, 0), new TimeSpan(21, 30, 0))
Если startTime
и endTime
равны DateTime
с, вы можете сказать
IsTimeOfDayBetween(someTime, startTime.TimeOfDay, endTime.TimeOfDay)