Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11850
Последний выпуск: 19.06.2015

Проверка, високосный год или нет. Вычисление дня недели

  1. год делится на 400 -> високосный -> конец;
  2. год делится на 100 -> не високосный -> конец;
  3. год делится на 4 -> високосный -> конец;
  4. год не високосный -> конец;
  5. всё.

А вот моя программка для определения дня недели. Кому надо - разберется. Работает вроде до 2100 года.

(*
Вычисление дня недели в приложениях автоматического вычисления
дня недели в датах от 1996 года и старше.
   
Copyright (C) Sergei Frolov, 1998.                                    
v1.0  Jan, 4, 1998.

Программа ориентирована на применение в приложениях, написанных
на языке ассемблера без использования аппаратного умножения/деления
и операций с плавающей запятой.
*)

program denned;                                                           

const                                                                    

  YEARS  : array[0.. 3] of byte = (0, 2, 3, 4);                        
  MONTHS : array[1..12] of byte = (0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5);  
  DAYOFWEEKS  : array[0..6] of string =                                  
    ('Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг',        
     'Пятница', 'Суббота');                                                

var       
                                                                
  a, b, c, d, e, f, tmp : byte;                                          
  day, month, year      : word;                                            

begin                                                                     

  repeat                                                                  

    write('Число XX -> ');
    readln(day);                                                         
    if day = 0 then break; { выход }                                      
    write('Месяц XX -> ');                                               
    readln(month);                                                        
    write('Год XXXX -> ');                                               
    readln(year);                                                       
    tmp := year - 1996;                                                  
    a := tmp and 3;                                                       
    b := (tmp shr 2) + (tmp and $FC);                                     
    c := MONTHS[month];                                                 
    if (a = 0) and (month > 2) then inc(c);                             
    a := YEARS[a];                                                      
    e := (a + b + c + day) mod 7;                                      
    writeln('Результат: ', DAYOFWEEKS[e]);                           
    writeln;                                                           

  until false;                                                         

end.      

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
Аноним
Мне нравитсяМне не нравится
10 января 2006, 15:12:11
<?php
//setlocale по вкусу...
echo date("w l",strtotime("2005-04-17"));
?>
ps. l (lowercase L)

ну или бронебойней:

<?php
$d="17/04/2005";

echo RuWDay($d);

function RuWDay($d){
switch(date("w",strtotime($d))){
case 0: return "воскресенье";break;
case 1: return "понедельник";break;
case 2: return "вторник";break;
case 3: return "среда";break;
case 4: return "четверг";break;
case 5: return "пятница";break;
case 6: return "суббота";break;
}
}
?>
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог