Определение дня недели
Для вычисления дня недели по любой дате удобно использовать формулу Целлера.
Формула Целлера
$$h = (q + \frac{26m+1}{10} + k + \frac{k}{4} + \frac{j}{4} + 5j) \bmod 7$$
где
- h — номер дня недели (0 = воскресенье, 1 = понедельник, …, 6 = суббота);
- q — число месяца;
- m — номер месяца (март = 3, …, декабрь = 12; январь и февраль считаются месяцами 13 и 14 предыдущего года);
- k — год столетия (последние две цифры года);
- j — номер столетия (первые две цифры года).
Пример: 11 апреля 1948 г.
Для этой даты:
q = 11, m = 4, k = 48, j = 19
Подставляем в формулу:
$$h = (11 + \frac{26\cdot4+1}{10} + 48 + \frac{48}{4} + \frac{19}{4} + 5\cdot19) \bmod 7$$
$$h = (11 + 105/10 + 48 + 12 + 4 + 95) \bmod 7$$
$$h = (11 + 10 + 48 + 12 + 4 + 95) \bmod 7$$
$$h = 180 \bmod 7 = 1$$
Итак, 11 апреля 1948 г. приходился на воскресенье.