Для определения дня недели по дате нужно использовать формулу:
Пояснения
Код месяца
Коды месяца и года — это, пожалуй, самое трудное в формуле.
Код месяца нужно просто запомнить.
- 1 — январь, октябрь;
- 2 — май;
- 3 — август;
- 4 — февраль, март, ноябрь;
- 5 — июнь;
- 6 — декабрь, сентябрь;
- 0 — апрель, июль.
Чтобы запоминать подобные нелогичные данные, проще всего прибегать к ассоциациям.
Код года
Код года в XXI веке рассчитывается по формуле:
Оператор «/» означает неполное частное, то есть целую часть результата деления.
- 2015 год: (6 + 15 + 15 / 4) % 7 = (6 + 15 + 3) % 7 = 25 % 7 = 4;
- 2016 год: (6 + 16 + 16 / 4) % 7 = (6 + 16 + 4) % 7 = 26 % 7 = 5;
- 2017 год: (6 + 17 + 17 / 4) % 7 = (6 + 17 + 4) % 7 = 27 % 7 = 6;
- 2026 год: (6 + 26 + 26 / 4) % 7 = (6 + 26 + 6) % 7 = 38 % 7 = 3.
Если вы захотите узнать день недели для даты другого века, придётся учитывать ещё значения века (6, 4, 2, 0). Вместо 6 для ближайших веков будут следующие значения:
- 16хх: 6;
- 17хх: 4;
- 18хх: 2;
- 19хх: 0;
- 20хх: 6;
- 21хх: 4 и так далее.
% 7
Здесь просто: % — оператор остатка при делении.
Расшифровка результата
Старт отсчёта — выходные, то есть: 0 — суббота, 1 — воскресенье и так далее.
Примеры расчёта
- 25 июля 2016 года: (25 + 0 + 5) % 7 = 30 % 7 = 2 — понедельник;
- 8 августа 2017 года: (8 + 3 + 6) % 7 = 17 % 7 = 3 — вторник;
- 5 января 2127 года:
- (4 + 27 + 27 / 4) % 7 = (4 + 27 + 3) % 7 = 34 % 7 = 6 — код года;
- (5 + 1 + 6) % 7 = 10 % 7 = 5 — четверг.
Конечно, расчёт дня недели по дате в уме — это не жизненно важный навык в век технологий. Но это нетривиальное упражнение для всех, кто любит развивать свою память и проводить операции с цифрами.
UPD. К сожалению, эта формула не совсем верно работает для високосного года. До 29 февраля включительно к формуле придётся прибавить ещё единицу, чтобы получить верный день. Спасибо читателям, что обнаружили ошибку.