IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Флейм (https://www.imho.ws/forumdisplay.php?f=26)
-   -   Как вычеслить какой был день недели зная дату. (https://www.imho.ws/showthread.php?t=94843)

DiMoN_23 26.10.2005 22:58

Как вычеслить какой был день недели зная дату.
 
Люди помогите :help:
Мне как-то расказали как вычеслить какой был день недели зная дату(год, месяц и число) а я дурак забыл.
Может кто знает ????
:help:

Йохансон 26.10.2005 23:36

А комп на что тебе? Кликни два раза мышой на часах и выбирай себе скоко душе угодно. С 1980 по 2099 годов календарь работает

DiMoN_23 26.10.2005 23:41

Не, ну комп вещь хорошая, но например сказать какой был день 8 мая 1945 года он не может.
А есть вычесление каторое без проблем можно зделать в голове
вот его то я и ищю.

Кысь 27.10.2005 02:27

Вот тут есть формулы для вычисления в уме дня недели (если ты можешь оперировать большими цифрами..) ;)
_http://www.krotov.info/history/00/posnov/cherepnin44.html

DiMoN_23 27.10.2005 03:33

Большое Спасибо, но есть упращённая формула :help:

Кысь 27.10.2005 04:14

Если б была, то по телевизору не показывали бы людей, которые умеют вычислять дни недели в уме как какое-то чудо. Не очень давно опять про такого мальчика рассказывали. А вообще, есть таблица, которую если иметь под рукой - то вычисление дня недели займёт пару секунд.

DiMoN_23 27.10.2005 16:14

Но я сам лично высчитывал в течении 2 минут и числа там не большие.
Так что есть такая формула!!!

waldo 16.11.2005 23:50

А тебе для каких целей?
Если в уме считать, то действительно таблицы есть.

Если в прогу строить - то другое дело, там либо специальные функции есть, либо стандартный метод по вычислению числа прошедших дней с известной даты и дня недели

Judge 18.11.2005 01:44

Нашёл в нете вот такое:
Цитата:

Существует довольно простой алгоритм вычисления дня недели для любой даты григорианского календаря
позднее 1583 года. Григорианский календарь начал действовать в 1582 — после 4 октября сразу настало
15 октября.

Положим year — год, month — месяц, day — день

a = (14 - month) / 12
y = year - a
m = month + 12*a - 2
dweek = (7000 + (day + y + y/4 - y/100 + y/400 + (31*m)/12)) mod 7
Все деления целочисленные (остаток отбрасывается).

Результат: 0 — воскресенье, 1 — понедельник и т. д.
Но как по ней считать? У меня ни фига не получилось! http://www.animac.ru/smiles/invision/194.gif

ssypchenko 22.11.2005 00:21

Можно в Excel попробовать меняя формат ячейки :)

ЧересЧеловек 22.11.2005 00:30

>Но как по ней считать? У меня ни фига не получилось!

Да нет все работает. Например сегодня.
а = (14-11)/12=0
у = 2005-0=2005
м=11+12*0-2=9
д=(7000+(21+2005+501-20+5+23))/7=9535/7=1362+1/7 ну а 1-понедельник, так что вот.
Если же имелось в виду, что "как это можно в уме просчитать", то в целом согласен не просто.
Но здесь можно кое-что посокращать. Например 7000 тут лишнее, первые три строчки тоже обсчитывать не нужно. Вот что я на сокращал:
д= (день + годС + годС/4 - годС/100 + год/400 + 2,59*м)мод7
где для февраля и января уменьшаем год на единицу, а месяц увеличиваем на 12,
потом для всех месяцев: м=месяц-2
годС - сокращеный год. Вычитаем из год 700 пока можно. Опять же сегодня:
годС=2005-700-700=605
д=(21+605+151-6+5+23)мод7=(799-777)мод7=22мод7=1 Вот это уже реально просчитать в голове.

Dede 22.11.2005 00:52

экий матерый человечище
Цитата:

ЧересЧеловек:
=9535/7=1362+1/7
не понятно, что ты тут приравнял?
да и арифметика в нижней строке вызывает вопросы
Цитата:

ЧересЧеловек:
д=(21+605+151-6+5+23)мод7=(799-777)мод7=22мод7=1

ЧересЧеловек 23.11.2005 00:01

>не понятно, что ты тут приравнял?

по формуле надо получить остаток (9535mod7) ну я его вот и получил - 1.


>да и арифметика в нижней строке вызывает вопросы

какие вопросы? То что я вместо "mod" писал "мод" смутило?
Или не согласен с тем, что 799mod7=(799-777)mod7 ?
Так это элементарно на калькуляторе проверяется в конце концов.


Встречный вопрос: пробовал посчитать какой-нибудь день? Получилось? если нет пиши расклад, покажу где ошибка.


Часовой пояс GMT +4, время: 02:48.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.