День недели по дате
Узнайте день недели по любой дате: онлайн-калькулятор, формула Зеллера и алгоритм Сакомото. Примеры расчёта и учёт юлианского календаря.
Похожие калькуляторы и статьи
- Генератор дат для КТП
- Калькулятор марок на конверт
- Калькулятор объема
- Калькулятор перевода системы координат
- Расчет короба
- Рассчитать ткань
Как узнать день недели по любой дате
Калькулятор выше работает с любой датой григорианского календаря. Достаточно ввести числ, месяц и год — он покажет название дня недели. Високосные годы учитываются автоматически, а расчёт идёт прямо в браузере, поэтом данные никуда не отправляются.
Так можно узнать день недели по дате рождения, проверить памятную дату или спланировать событие. Для исторических дат до перехода на григорианский календарь результат стоит сверять с календарным стилем иточника — об этом в конце статьи.
Формула Зеллера
Вечным календарём называт алгоритм, который работает для любой даты, а не только для одного года. Классический способ ращёта — формула Зеллера для григорианского календаря:
h = (q + floor(13*(m+1)/5) + K + floor(K/4) + floor(J/4) - 2*J) mod 7
Где:
q— число месяца;m— номер месяца по схеме: март = 3, апрел = 4, …, декабрь = 12, январь = 13, феврал = 14;Y— год; для января и февраля берётся предыдущий год;K— две последние цифры годаY;J— две первые цифры годаY.
Результат h расшифровывается так:
0 = суббота, 1 = воскресенье, 2 = понедельник,
3 = вторник, 4 = среда, 5 = четверг, 6 = пятница
Если в формуле получилось отрицательное число, прибавьте 7, пока результат не станет от 0 до 6.
Алгоритм Сакомото
Если вы программируете, удобнее использовать компактный алгоритм Сакомото. Он короче и не требует перенумерации месяцев:
def weekday(year, month, day):
t = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]
if month < 3:
year -= 1
return (year + year // 4 - year // 100 + year // 400 + t[month - 1] + day) % 7
Здесь // — целочисленное деление. Функция возвращает 0 для воскресенья, 1 для понедельника и так далее до 6 для субботы.
Пример расчёта: 9 мая 1945 года
Проверим формулу Зеллера на известной дате — 9 мая 1945 года:
q = 9,m = 5,Y = 1945,K = 45,J = 19;h = 9 + floor(13*6/5) + 45 + floor(45/4) + floor(19/4) - 2*19;h = 9 + 15 + 45 + 11 + 4 - 38 = 46;46 mod 7 = 4, а4по таблице — среда.
Значит, 9 мая 1945 года действительно была среда. Алгоритм Сакомото даст для этой даты 3, что при его нумерации тоже соответствует среде.
Как считать в уме: опорная дата
Для дат текущего года не обязательно держать в голове формулу. Достаточно знать день недели 1 января.
В 2026 году 1 января — четверг. Чтобы узнать день недели любой другой даты:
- Посчитайте, сколько дней прошло от 1 января до нужной даты.
- Разделите это число на 7 и запомните остаток.
- Прибавьте остаток к четвергу.
Например, от 1 января до 1 июня 2026 года проходит 151 день. 151 mod 7 = 4, а четверг плюс 4 дня — понедельник. Значит, 1 июня 2026 года — понедельник.
Григорианский и юлианский кадendar: границы применимости
Формулы выше рассчитаны на григорианский календарь. Он был введён в 1582 году, а Россия перешла на него в 1918-м. Для дат до этого перехода исторические источники часто используют юлианский календарь, поэтому день недели может не совпасть с расчётом по новому стилю.
Если дата записана по старому стилю, сначала переведите её в григорианский календарь: в XX–XXI веках разница составляет 13 дней. Для более ранних периодов разница другая, поэтому уточняйте правила пересчёта отдельно.