форум
22.08.2019
Просмотров: 217
Нью бест

Как по дате вычислить день недели?

alex2

Когда под рукою нет календаря, для того чтоб найти, какой сейчас день недели, есть возможность пользоваться последующим методом:

1. Обозначим число, год и месяц соответственно d, m и y.

2. В том случае m ≤ 2 (т.е. месяц январь либо февраль), то год уменьшим на 1, а число увеличим на 3:

y:= y-1;

d:= d+3;

3. Сейчас номер дня недели (w) рассчитывается по последующей формуле:

w:= 1 + [d + y + y/4 — y/100 + y/400 + (31m+10)/12] mod 7;

(все операции деления — целочисленные, т.е. берется целая часть личного; mod — операция получения остатка от деления).

Результатом будет целое число в спектре от 1 до 7, соответственное дням недели от воскресенья до субботы (1 — пн, 2 — вторник, 3 — среда, 4 — четверг, 5 — пятница, 6 — суббота, 7 — воскресенье).

Данный метод получен модификацией обширно известного метода вычсиления дня недели.

Выгоды измененного метода:

  • не просит использования второстепенных переменных;
  • комфортен в языках программирования, использующих передачу характеристик по значению;
  • дает итог, соответственный российской традиции нумерации дней недели, начиная с пн..
  • Метод работает в границах применимости григорианского календаря.

    Примеры:

    1. Текущая дата: 27.09.2009

    d = 27;

    m = 9;

    y = 2009;

    Так как m > 2, сходу перебегаем к п.3

    w = 1 + [27 + 2009 + 2009/4 — 2009/100 + 2009/400 + (31*9+10)/12] mod 7 =

    = 1 + [27 + 2009 + 502 — 20 + 5 + 24] mod 7 = 1 + 6 = 7 — воскресенье.

    2. Текущая дата: 31.01.1968

    d = 31;

    m = 1;

    y = 1968;

    Так как m ≤ 2, введем корректировку:

    y = 1967;

    d = 34;

    Сейчас вычисляем:

    w = 1 + [34 + 1967 + 1967/4 — 1967/100 + 1967/400 + (31*1+10)/12] mod 7 =

    = 1 + [34 + 1967 + 491 — 19 + 4 + 3] mod 7 = 1 + 2= 3 — среда.

    Полезные ссылки:

  • Метод вычисления дня недели — Википедия.
  • Дополнительно на New-Best.com:

  • Как по дате найти день недели?
  • Что такое григорианский календарь?
  • Почему в различные годы одна и та же дата приходится на различные дни недели?
  • Где отыскать астрономический календарь?
  • Как самому расcчитать дату Пасхи?
  • Array

    Добавить комментарий

    орфографическая ошибка в тексте:
    чтобы сообщить об ошибке автору, нажмите кнопку "отправить сообщение об ошибке". вы также можете отправить свой комментарий.

    Задать вопрос прямо сейчас