2013-09-17 3 views
4

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

У меня есть 'Diary'

9AM - 5 вечер

Внутри этого дневника у меня есть события или 'назначения'

10AM - 12PM - Назначение 1
1 вечер - 1:30 вечер - Назначение 2

Что я прошу, есть инструмент, который я могу перевернуть дневник, чтобы дать мне свободное пространство за пределами этих Назначений.

E.g. Это вернет мне список из

9AM - 10 утра
12 вечера - 1 вечера
1:30 вечера - 5 вечера

Так что я могу затем использовать в моей программе.

Любые идеи?

+0

у вас есть «Дневник» объект или список или таблицу db? , Опубликуйте дополнительную информацию .... –

+0

Что касается TimeSpan? Что вы уже пробовали и каким образом результаты были неудовлетворительными? Поиск блоков свободного времени в заданном интервале с учетом списка несвободных временных интервалов не должен быть сложным; если вы можете жить с иногда субоптимальной производительностью, это тоже должно быть легко. –

ответ

5

Возможно, вы захотите проверить эту статью CodeProject: Time Period Library for .NET, в частности пример TimeGapCalculator.

+0

Ничего себе, этот сайт является конкурентоспособным. Я кланяюсь твоим быстрым пальцам. –

+0

@ Oliver: ну, да, это те [поддельные интернет-точки, которые люди готовы что-то сделать] (http://blog.stackoverflow.com/201/2012/five-years-ago-stack-overflow-launched-then- а-чудо-произошло /). И так как я использовал эту библиотеку некоторое время назад, я вспомнил, что это может быть полезно. – Groo

+0

Функциональность TheMonkeyMan ищет в 'TimeGapCalculator' Edit: oh really .. вы быстр: P – Heki

2

Да, есть! Я настоятельно рекомендую использовать эту бесплатную библиотеку из CodeProject под названием TimePeriod.

Эта библиотека будет обрабатывать

1

Не кажется, что трудно реализовать себя:

  • Сортировка дневниковые назначения по дате начала.
  • Один свободный период от старта дневника> первое назначение
  • Один свободный период с последнего назначения> конец дневника
  • итерируем назначения и каждый период между является беспроцентным периодом
+0

Необходимо рассмотреть некоторые случаи, когда несколько встреч имеют одинаковое время начала. Например, было бы разумно отсортировать их по времени их начала *, а затем * своим временем окончания, так что последнее назначение всегда дает меньший разрыв при повторении. – Groo

+1

Я предполагал, что вы не допускаете совпадений в ваших встречах. Если вы это сделаете, становится все сложнее. – Carra

Смежные вопросы