Вступление
В процессе написания программного обеспечения для другого проекта, я столкнулся с необходимостью работы с расчётами периодов времени. Эти расчёты были важной частью решения, соответственно требования к корректности и аккуратности результатов были высоки.
Необходимая функциональность затрагивала следующие области:
1. Поддержку индивидуальных периодов времени
2. Работу с календарём периодов внутри календарного года
3. Работу с календарём периодов, выходящим за рамки календарного года (фискальный год или школьный учебный год)
Такие расчёты должны были быть доступны как для серверных компонент (веб-сервисы и задачи), так и для «толстых» клиентов (Silverlight).
Анализ ситуации привёл меня к выводу, что ни компоненты .NET Framework (чего я не ожидал), ни другие доступные инструменты не соответствуют всем моим требованиям. А поскольку я уже сталкивался с подобными проблемами в прежних проектах, то и решил разработать для этих целей библиотеку.
Несколько циклов разработки привели к созданию библиотеки Time Period, доступной ныне для таких сред исполнения:
1. .NET Framework версии 2 и выше
2. .NET Framework для Silverlight с версии 4
3. .NET Framework для Windows Phone с версии 7
С целью демонстрации части функциональности библиотеки, я сделал приложение на Silverlight, назвал его Calendar Period Collector и разместил по адресу http://www.cpc.itenso.com/. Приложение демонстрирует поиск календарных периодов.
Далее читаем перевод в блоге (много кода, не удается качественно его перенести на Хабр):
Читать далее.
Статья стала лучшей статьёй на тему C# на сайте CodeProject в марте 2011 г., а также лучшей статьей сайта CodeProject в марте 2011 г.
Исходные коды и ссылки:
Исходный код проекта на CodeProject: Скачать код.
Исходный код проекта на box.com: Скачать код.
Ссылка на оригинал статьи: автор Jani Giannoudis.
Автор: hDrummer