Использование .NET 3.5
Я хочу определить, попадает ли текущее время во временной диапазон.
Пока у меня есть время:
DateTime currentTime = new DateTime();
currentTime.TimeOfDay;
Я не понимаю, как преобразовать и сравнить временной диапазон. Будет ли это работать?
if (Convert.ToDateTime("11:59") <= currentTime.TimeOfDay
&& Convert.ToDateTime("13:01") >= currentTime.TimeOfDay)
{
//match found
}
ОБНОВЛЕНИЕ1: Спасибо всем за ваши предложения. Я не был знаком с функцией TimeSpan.
Ответы:
Для проверки времени суток используйте:
Для абсолютного времени используйте:
источник
Здесь есть несколько хороших ответов, но ни один из них не охватывает случай, когда ваше время начала не совпадает с вашим временем окончания. Если вам нужно пересечь дневную границу, то может помочь что-то вроде этого:
Обратите внимание, что в этом примере временные границы являются инклюзивными, и это все равно предполагает разницу менее чем в 24 часа между
start
иstop
.источник
11:57 pm
и это сработало:TimeSpan time = new TimeSpan(23, 57, 00); DateTime date_with_time = mydate.Add(time);
DateTime
попадает ли время данного заданного в указанные рабочие часы. Рабочие часы могут быть в один и тот же день, но они также могут занимать два дня (например, 15:00 - 1:00 часов работы).если вы действительно хотите проанализировать строку в TimeSpan, тогда вы можете использовать:
источник
11:57 pm
и это сработало:TimeSpan time = new TimeSpan(23, 57, 00); DateTime date_with_time = mydate.Add(time);
Простая маленькая функция расширения для этого:
источник
start <= end
должно быть изменено,start < end
и другое предположение может заключаться в том, что оно выполняется в тот же день, но если это так, то оно, скорее всего, не выполнится вы используете Now.TimeOfDay, так как он включает миллисекунды и приводит к выходу за пределы диапазона.Попробуйте использовать объект TimeRange в C # для достижения цели.
Вот где я получил этот пример использования TimeRange
источник
TimeOfDay
Свойство возвращаетTimeSpan
значение.Попробуйте следующий код:
Кроме того, так
new DateTime()
же, какDateTime.MinValue
и всегда будет равен1/1/0001 12:00:00 AM
. (Типы значений не могут иметь непустые значения по умолчанию). Вы хотите использоватьDateTime.Now
.источник
Вы очень близки, проблема в том, что вы сравниваете DateTime с TimeOfDay. Что вам нужно сделать, это добавить свойство .TimeOfDay в конец ваших функций Convert.ToDateTime ().
источник
Будет ли это проще для обработки случая границы дня? :)
источник
Используя Linq, мы можем упростить это
источник
источник