Библиотека расчёта периодов времени для платформы .NET

в 7:29, , рубрики: .net, csharp, Программирование

Вступление

В процессе написания программного обеспечения для другого проекта, я столкнулся с необходимостью работы с расчётами периодов времени. Эти расчёты были важной частью решения, соответственно требования к корректности и аккуратности результатов были высоки.

Необходимая функциональность затрагивала следующие области:

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

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js