На самом деле вам не нужен новый алгоритм.Пока у вас есть один алгоритм с диапазоном 400 лет (или более), вы можете ввести любую дату в диапазон этого алгоритма.Это работает, потому что григорианский календарь повторяется каждые 400 лет (XX / YY / ZZZZ - это тот же день недели, что и XX / YY / (ZZZZ + 400)).
Итак, если предположить, что у вас есть какой-то алгоритм, который работаетдля дат с 01.01.1600 по 31.12.1999 (включительно) вы можете рассчитать день недели для любой даты, используя (year mod 400)+1600
в качестве года.
Если у вас нет 400-год, начиная с 1/1 / XXXX (где XXXX mod 400 = 0
), вам нужно немного изменить дату, чтобы получить правильный результат (вместо добавления 1600 к году, добавьте X * 400, где X - целое число, такоечто некоторые из дат будут в диапазоне, затем добавьте или вычтите 400 к году для тех дат, которые находятся вне диапазона).