Як комп'ютер розраховує день тижня на будь-яку дату
Кожна дата відтоді, як григоріанський календар набув чинності, має лише один правильний день тижня, і його можна розрахувати лише за допомогою арифметики — не потрібні програма календаря чи таблиця пошуку. Ідея, що лежить в основі, та сама, формалізована конгруенцією Целлера та методом Сакамото: підрахувати загальну кількість днів від відомої контрольної точки, а потім взяти цей рахунок за модулем 7, щоб вийти на день тижня.
Сучасне програмне забезпечення не виконує класичну формулу Целлера буквально — воно зазвичай відстежує кількість днів за внутрішнім пролептичним григоріанським календарем, — але результат математично ідентичний тому, що обчислюють ці алгоритми ручки та паперу. Саме через цю узгодженість цей калькулятор, паперовий альманах і розумовий математичний трюк узгоджують однакову відповідь на ту саму дату.
Одноденна (або дводенна) зміна, рік за роком
Звичайний рік складається з 365 днів — рівно 52 тижнів плюс один додатковий день. Цей залишений день є причиною того, що фіксована дата, скажімо, 4 липня, зміщується вперед рівно на один день тижня кожного року: вівторок одного року, середа наступного і так далі.
Високосні роки порушують цю стійку схему. Оскільки 29 лютого вставляється в кінці року, будь-яка дата, починаючи з 1 березня, переноситься на два дні тижня вперед замість одного порівняно з роком раніше. Дати в січні та лютому не впливають, доки високосний день не мине.
На позначці століття є ще одна зморшка: роки, які діляться на 100, не є високосними, якщо вони також не діляться на 400. 2000 рік був високосним за цим правилом; 1900 не було, і 2100 також не буде — деталь, яка має значення, якщо ви обчислюєте дні тижня далеко в минулому чи майбутньому.
Перевірка днів тижня на історичні дати
Оскільки день тижня є фіксованою властивістю самої дати, цей самий розрахунок працює для перевірки історичних записів — підтвердження задокументованої події, яка дійсно сталася в день тижня, як стверджує джерело, або визначення дня тижня, у який народився далекий предок.
Одне застереження щодо дат до 1582 року: календар, який використовувався до григоріанської реформи (юліанський календар), керувався дещо іншими правилами високосного року, тому обчислення днів тижня для дат до цього переходу залежить від того, який календар використовували самі історичні записи.
За межі однієї дати: випадки та кількість днів тижня
Коли ви можете обчислити день тижня для однієї дати, з тієї ж математики випадають ще три корисні запитання:
- Next/previous occurrence — the closest date before or after a given day that falls on a specific weekday, useful for finding "the next Friday" from any starting point.
- Підрахунок днів тижня — скільки разів певний день тижня (скажімо, понеділок) трапляється в діапазоні дат, що є тією самою математикою, що стоїть за періодами виплат або датами повторюваних зустрічей.
- Знайти всі випадки — повний список усіх дат, на які припадає певний день тижня, у межах діапазону, що зручно для планування будь-чого, що повторюється щотижня.
Якщо замість цього вам потрібна точна кількість днів між двома датами або поточний зворотний відлік до цільової дати, Лічильник днів займається цим безпосередньо. Додавання або віднімання років, місяців або тижнів від дати див Калькулятор дати.