Как вычислить день недели по дате
Вычисление дня недели
Случалось ли Вам мучительно вспоминать, какой именно день недели приходился на то или иное число год или два назад, или вычислять, на какой день недели в этом году приходится Ваш день рождения? Если да, то Вас, думаю, заинтересует простая программа, позволяющая по заданной дате мгновенно вычислить соответствующий день недели. В ее основе лежит такая формула:
день недели = остаток от деления X на 7,
где X = abs(trunc(2.6*m-0.2)+d+y/4+y+c/4-2*c);
m — номер месяца (см. ниже);
d — число (день месяца);
с — номер столетия (см. ниже);
у — номер года в столетии.
При использовании этой формулы следует учесть два обстоятельства. Во-первых, формула верна для григорианского календаря нового стиля (от 1582 до 4903 года). Во-вторых, год и месяц следует предварительно преобразовать так, как если бы начало года приходилось на 1 марта. Иными словами, март в этой формуле имеет порядковый номер 1, апрель 2, . январь 11 и февраль 12, причем январь и февраль следует отнести к предыдущему году. Например, для 1 февраля 1991 года номер месяца должен быть равен 12, а год 1990, в то время как для 31 декабря 1991 года номер месяца — 10, а год — 1991. Результат вычисления дается в виде целого числа в диапазоне от 0 до 6, причем 0 соответствует воскресенью.
Приступим к разработке программы. Прежде всего, предположим, что программа уже создана и Вы осуществляете ее прогон. Какая форма взаимодействия с программой кажется Вам наиболее подходящей? Вряд ли Вас удовлетворит однократное ее исполнение (ввод некоторой даты и вывод на экран соответствующего дня недели). Скорее всего Вы захотите повторить работу программы для нескольких дат, например, поинтересоваться, в какой день недели Вы родились, затем, на какой день недели приходится в этом году Ваш день рождения, дни рождения близких, друзей; может быть, определить, в какой день родились известные Вам исторические деятели, и т.д. Таким образом, в программе следует предусмотреть многократное выполнение действий — , причем число циклов вычисления заранее не известно. Сразу же возникает новый вопрос: как сообщить программе, что Вы завершаете работу с ней? Для этого можно условиться, что ввод некоторой заранее обусловленной или недопустимой даты должен интерпретироваться программой, как указание на прекращение работы. С учетом сказанного, напишем такой начальный вариант программы:
if IsCorrectDate then
until not IsCorrectDate
Если Вы попытаетесь запустить эту программу на счет, то ее поведение будет зависеть от начального значения переменной IsCorrectDate. Это значение случайно, так как компилятор Турбо Паскаля не проводит начальной инициализации переменных. Скорее всего, тот байт оперативной памяти, в котором она разместится, окажется нулевым, что в Турбо Паскале расценивается как логическое значение FALSE, поэтому с большой вероятностью ничего не произойдет, и программа сразу же завершит свою работу (условие not IsCorrectDate будет выполнено). Если начальное значение IsCorrectDate окажется не нулевым, то цикл REPEAT. . .UNTIL будет выполняться до тех пор, пока Вы не выключите компьютер или не нажмете клавиши Ctrl-Break.
Будем считать, что необходимые действия осуществляются в двух процедурах с именами InputDate (ввод даты) и WriteDay (вычисление и печать дня недели). В процедуру InputDate не нужно ничего передавать из программы, так как в ней самой осуществляются ввод и контроль даты. Поэтому заголовок процедуры может иметь такой вид:
Procedure InputDate(var d,m,y: Integer; var correctly:
Процедура WriteDay, напротив, только получает из программы нужные ей данные и ничего не возвращает в программу, поэтому в ее заголовке параметры описываются без слова VAR:
Procedure WriteDay(d,m,у : Integer);
С учетом этого программу можно уточнить следующим образом:
Procedure InputDate(var d,m,y : Integer;
var correctly : Boolean);
Как вычислить день недели по дате
День недели по дате
Поддержи проект, поделись нашим сайтом с друзьями. Спасибо!
День недели по дате – удобный калькулятор времени онлайн
Калькулятор времени – интересная и полезная штука, которая немного облегчает жизнь и позволяет, в том числе, узнать день недели по дате. Используйте наш сервис, когда под рукой нет календаря, либо число, для которого хотите найти день недели, удалено от текущей даты – пролистывать сотню страниц в календаре, согласитесь, очень долго и нудно. Калькулятор работает со 100% точностью – можете быть уверенны, что вся информация достоверна. Более того, для использования сайта не нужно проходить регистрацию, сервис абсолютно бесплатный.
6 причин использовать калькулятор времени, чтобы узнать день недели по дате
Почему нужно определять, какой день недели был того или иного числа? Это необходимо не только ради любопытства, но и в сугубо практичных целях, если нужно узнать – будет ли день будничным или выходным. Калькулятор времени рассчитает день недели:
- когда вы родились – будет полезно для составления гороскопа или астрологического прогноза;
- для ближайших праздников – это нужно, чтобы понять, ожидает ли нас короткая рабочая неделя;
- при планировании свадьбы – достаточно проверить интересующую дату, чтобы выяснить – подходит ли она для регистрации брака;
- в процессе подготовки бухгалтерских и отчетных документов – не придется отвлекаться, открывая календарь;
- при составлении графика отпусков;
- если собираетесь оплачивать кредит – в выходные дни переводы обычно не выполняются, поэтому нужно внести деньги на счет заранее.
Калькулятор времени позволяет узнать, какой день недели был, когда вы родились или поженились. Ресурс создан для людей, которым приходится работать с календарем, здесь можно узнать, какой день недели будет 1 сентября, 31 декабря, 23 февраля, 8 марта и в другие праздники.
Как определить день недели по дате без календаря?
Найти день недели можно в календаре – и если с ближайшими датами все просто, то с числами, которые удалены от сегодняшнего дня на несколько месяцев или даже лет, придется постараться и потратить время. Чтобы упростить себе задачу, используйте наш калькулятор – это просто:
- В поле ввода даты укажите нужное число – можно вводить вручную, по умолчанию стоит текущая дата.
- Кликните кнопку «Посчитать!».
- Результат отобразится ниже – вы увидите день недели и ее порядковый номер.
- Также можно использовать кнопки «сегодня» и «завтра», если нужно посчитать день недели на текущие числа.
Проект разработан, чтобы помогать людям – наши посетители пользуются не только калькулятором времени онлайн, но и другими удобными приложениями, включая таймер, секундомер, будильник, метроном. Лаконичное оформление, понятное управление, безграничные возможности и работа только через интернет без установки программ – наши ключевые преимущества, благодаря которым сервис рекомендуют друзьям.
Как узнать день недели любой даты
Ниже приведены несколько кратчайших путей и подсказок, которые помогут узнать день недели любой даты. Вы можете использовать этот трюк в компании родителей или друзей и доказать им свой талант.
Расчет смещения столетий (по Григорианскому календарю):
- Возьмите первое двукратное число определенного года.
- Найдите следующее по величине число кратное 4 после первого двукратного числа.
- Вычтите 1 от найденного числа.
- Затем от него отнимите первое двукратное число.
- Наконец, умножьте полученную величину на 2.
Пример:
Рассчитаем смещение столетий для 1900 века.
Первое двукратное число данной даты — 19.
Следующее по величине число кратное 4 после 19 это 20.
Вычтем 1 от этого числа (20–1).
Теперь отнимем первое двукратное число ((20–1)–19).
Наконец, умножим полученную величину на 2.
1900в = ((20-1)-19)*2 = 0.
Можно воспользоваться приведенной ниже таблицей смещения столетий по Григорианскому календарю, в которой сгруппированы другие значения смещения столетий.
Столетие | Смещение |
300, 700, 1100, 1500,1900, etc. | 0 |
400, 800, 1200, 1600, 2000, etc. | 6 |
100, 500, 900, 1300, 1700, etc. | 4 |
200, 600, 1000, 1400, 1800, etc. | 2 |
Расчет смещения месяцев
В одном месяце мы имеем 4 недели, что означает 4×7=28 дней. В январе 31 день. Оставшиеся дни: 31-28=3. Это поможет при расчете числа для каждого месяца.
Вначале обозначим январь как 0.
Февраль = (Количество дней января + оставшиеся дни в январе) / 7) = (31 + 0) / 7 = 3
Март = (количество дней в феврале + оставшиеся дни в феврале) / 7) = (28 + 3) / 7 = 3
Апрель = (Количество дней марта + оставшиеся дни в марте) / 7) = (31 + 3) / 7 = 6
Продолжайте так до декабря . Числа для месяцев:
Таблица смещения месяцев.
Месяц | Смещение |
Январь | 0 |
Февраль | 3 |
Март | 3 |
Апрель | 6 |
Май | 1 |
Июнь | 4 |
Июль | 6 |
Август | 2 |
Сентябрь | 5 |
Октябрь | 0 |
Ноябрь | 3 |
Декабрь | 5 |
Числа дней недели
Воскресенье | 0 |
Понедельник | 1 |
Вторник | 2 |
Среда | 3 |
Четверг | 4 |
Пятница | 5 |
Суббота | 6 |
Необходимо будет запомнить эти таблицы для успешного проведения трюка.
А сейчас давайте же перейдем непосредственно к самому трюку.
Запомните формулу Смещение столетий + Смещение лет + Смещение месяцев + Смещение дней
Где,
- Смещение дней = Полученные дни mod 7
- Смещение лет = (две последние цифры года +( две последние цифры года/4)) mod 7
Если заданный год является високосным и месяц – Январь или Февраль, тогда смещение лет = (две последние цифры года + (две последние цифры года/4)) mod 7) – 1.
Шаг 1: Спросите любую дату и докажите, что сможете назвать день недели указанной даты.
Пример: 23 июня 1986
Шаг 2: Возьмите значение смещения данного столетия с первой таблицы, для 1900 это 0.
Шаг 3: Рассчитайте смещение лет для 86: ((86 + 86/4) mod 7*) = 2
Шаг 4: Возьмите значение смещения месяцев со второй таблицы, для Июня это 4.
Шаг 5: Рассчитайте смещение дней: 23 mod 7* = 2.
Шаг 6: Теперь сложите все 4 числа: 0 + 2 + 4 + 2 = 8.
Шаг 7 : Разделите 8 по модулю на 7 = 1.
Согласно таблице чисел дней недели числу 1 соответствует Понедельник.
Следовательно ваш ответ: Понедельник.
* mod 7 — Сравнение по модулю натурального числа 7. В выше приведенном примере 23 mod 7* = 2, то есть 23 — 21 (ближайшее меньшее целое число делимое на 7) = 2. Еще пример (86 + 86/4) mod 7, 86+21 (целое полное число) = 107 — 105 (ближайшее число делимое на 7) = 2
Как вычислить день недели по дате
Проблемы с отображением видео:
- Главная
- Приемы Excel
- Начинающим
- Возможности
- Хитрости
- Сводные таблицы
- Диаграммы, графики
- Макросы
- Скачать надстройку
- Справка
- Установка и настройка
- Команды
- Функции (формулы)
- Продвинутый курс MS Excel
- Сводные таблицы MS Excel
- Диаграммы MS Excel
Как определить день недели по дате?
В данной статье описано 4 способа ответить на этот вопрос.
Способ первый:
Используем формулу «ДЕНЬНЕД«:
Данная формула возвращает день недели в числовом формате (от 1 — понедельник до 7 — воскресенье). Двойка означает что мы будем считать понедельник первым днем недели.
Способ второй:
Используем формулу «ТЕКСТ«:
Данная формула возвращает день недели в текстовом формате. «ДДДД» означает что мы хотим вывести полное название дня недели. (Более подробно о форматах формулы «ТЕКСТ«).
Способ третий:
В диалоговом окне «Формат ячеек» создаем следующий формат ДДДД и нажимаем «ОК»:
В указанной ячейке получаем вместо даты название дня недели. Причем дата остается датой, то есть ее можно использовать в расчетах:
Способ четвертый:
Для этого выделяем ячейки с датами, переходим во вкладку «ЁXCEL» Главного меню, нажимаем кнопку «Ячейки» и выбираем команду «Преобразовать дату в текст»:
В открывшемся диалоговом окне установите следующие параметры и нажмите «ОК»:
Получаем в указанной ячейке день недели вместо даты: