На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> День недели.
    Люди, может у кого завалялся алгоритм для вечесления дня недели, зная число, месяц и год? Желательно и по новому и по старому стилям.  
      Вот, надеюсь, поможет :)
      http://src.fitkursk.ru/articles/art0000026.asp
      На Сях.
        А почему не пользоваться стандартным видовозным окошком, которая позволяет выводить абсолютно весь календарь!
          Цитата Rechkin, 30.07.02, 06:48:51
          А почему не пользоваться стандартным видовозным окошком, которая позволяет выводить абсолютно весь календарь!


          Стандартное окошко Виндоуз показывает только с 1980 года
            Люди, а самим впадлу?
            30 июля 2002 года вторник. Нужно например 17 февраля 1934 года.
            Отнимаем 68*365 (годы) + 16 (высокосные) + 30+2*31+2*30+11 (дни). Получаем число. Ищем остаток деления на 7. Етот остаток отнимаем от вторника (например вторник - 3 = суббота).
              На Пасквиле:
              ExpandedWrap disabled
                <br>function DayOfWeek(D,M,Y: Word): Byte;<br> var N: Longint;<br>begin<br> if M>2 then Inc(M) else begin Inc(M,13); Dec(Y); end;<br> N:=trunc(365.25*Y)+trunc(30.6*M)+D-621050;<br> Result:=N-trunc(N/7)*7+1;<br>end;<br>
                В Дельфи есть такая ф-ия встроенаная.
                  Цитата Song, 31.07.02, 10:27:38
                  В Дельфи есть такая ф-ия встроенаная.

                  Только не все дельфи юзают ;), а те, кто юзает - могут круто обломаться вычисляя день недели даты меньшей, чем 30 декабря 1899 года. См. в хелпе описалово типа TDateTime Хотя это из 5-й дельфи, может позже чего исправили, я не знаю.

                  Кстати, кому надо - приведенная мною выше функция, тока на PHP4:
                  ExpandedWrap disabled
                    <br>// Аргумент функции - дата в формате ДД.ММ.ГГГГ<br>function DayOfWeek($D) {<br> $D = explode(".",$D);<br> if (!(checkdate($D[1],$D[0],$D[2]))) return -1;<br> if ($D[1]>2) $D[1]++; else {<br>   $D[1] += 13;<br>   $D[2] --;<br> }<br> $N = floor(365.25*$D[2]) + floor(30.6*$D[1]) + $D[0] - 621050;<br> return ($N-floor($N/7)*7+1);<br>}<br>

                  Для ленивых ;)
                    Спасибо всем ответившим  :D
                      Цитата JoeUser, 30.07.02, 14:04:50
                      На Пасквиле:
                      ExpandedWrap disabled
                        <br>function DayOfWeek(D,M,Y: Word): Byte;<br> var N: Longint;<br>begin<br> if M>2 then Inc(M) else begin Inc(M,13); Dec(Y); end;<br> N:=trunc(365.25*Y)+trunc(30.6*M)+D-621050;<br> Result:=N-trunc(N/7)*7+1;<br>end;<br>

                      Маааленькая такая ошибочка(алгоритмическая) в сырцах. 365.25 - средняя продолжителность года в столетнем цикле. Y необходимо разбить на 2 части: 1-количество столетий и 2 - порядковый номер года в столетии. Cредняя продолжителность столетия 36524.25 дней.(григорианский календарь) есть приближение к тропическому году(365.2421988). Имеем
                      ExpandedWrap disabled
                        <br>.........<br>century := Y div 100; year := Y mod 100;<br>N := trunc(36524.25*century) + trunc(365.25*year) + ...<br>далее по тексту с небольшим исправлением const<br>
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0319 ]   [ 15 queries used ]   [ Generated: 27.04.24, 17:27 GMT ]