c# TimeOfDay не между двумя интервалами времени

Например, сегодняшняя дата: DateTime.Now

И 2 TimeSpan, которые представляют два периода времени

DateTime mydate = DateTime.Now;

TimeSpan start = TimeSpan.Parse("14:00:00");
TimeSpan end =   TimeSpan.Parse("15:00:00");

// TO DO: 

Как проверить, что время mydate (TimeOfDay) не находится между диапазоном start и end.

В основном проверьте, находятся ли часы, минуты, секунды между 14:00 и 15:00 или вне этого диапазона.

ОБНОВИТЬ:

Правильное условие: mydate.TimeOfDay <= start || mydate.TimeOfDay >= end


person user2818430    schedule 28.06.2015    source источник
comment
TimeSpan не соответствует двум часам. Он представляет собой период времени, в вашем случае 14 часов и 15 часов, а не 14:00 и 15:00 соответственно.   -  person MarcinJuraszek    schedule 28.06.2015
comment
Спасибо. Я внес изменения.   -  person user2818430    schedule 28.06.2015
comment
@MarcinJuraszek, но он может представлять время, если день, как указывает ответ Тоби.   -  person phoog    schedule 28.06.2015


Ответы (1)


Сравнение их, кажется, работает по швам. TimeOfDay это TimeSpan, как и start и end

Console.WriteLine(mydate.TimeOfDay <= start || mydate.TimeOfDay >= end);

Скрипка

person Bobby Tables    schedule 28.06.2015
comment
Правильное условие: mydate.TimeOfDay <= start || mydate.TimeOfDay >= end. Я отмечу ваш ответ как правильный, чтобы отправить меня в правильном направлении. - person user2818430; 28.06.2015
comment
@user2818430 user2818430 Спасибо, сначала посмотрел, было ли это внутри интервала, когда я обновлял, забыл заменить && на || - person Bobby Tables; 28.06.2015
comment
Обычно диапазон времен представляет собой полуоткрытый интервал [start,end). Для проверки внутри диапазона используйте time >= start && time < end. Чтобы проверить за пределами диапазона, используйте time < start || time >= end. У вас это близко, но не исключается начальное значение. - person Matt Johnson-Pint; 08.07.2015