AnnoDomini
Калькулятор дат григорианского календаря
Основная идея – имеется тип данных totalDays_t. Это число – номер дня от Рождества Христова. Его можно перевести в дату Д.М.Г и обратно. Также по этому числу можно узнать день недели. Все вычисления ведутся через это число. Например:
1. количество дней между двумя датами: переводим обе даты в totalDays_t и из поздней вычитаем раннюю;
2. узнать дату через 100 дней от заданной: переводим заданную дату в totalDays_t, прибавляем 100 и получившееся число переводим обратно в дату.
и т.д.
Все типы данных и функции прокомментированы в начале файла AnnoDomini.h
Проверялось в Microsoft Visual Studio (пример в папке examples\MSVS) и в среде Arduino для UNO-подобных (пример в папке examples\AnnoDominiTestArduino) Примеры идентичны и содержат «глобальный тест» и пару мелких примеров вычислений.
Глобальный тест – это полная проверка функций библиотеки при ВСЕХ допустимых значениях параметров. Т.е. там для ВСЕХ дней в годах от 1-го до 65535-го, производится перевод даты в номер дня от РХ и обратно с контролем корректности.
ВНИМАНИЕ: на PC глобальный тест отрабатывает без ощущаемой задержки, но на Arduino UNO время отработки глобального теста весьма велико – около 78 минут.