Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: посчитать кол-во понедельников в определенном месяце
 
 автор: absorber   (10.09.2007 в 22:44)   письмо автору
 
 

Привет всем.
Подскажите, кто знает как на Java Script посчитать кол-во понедельников или другого дня недели в определенном месяце года.
Например: Сентябрь 2007 года как высчитать сколько в нем понедельников? 4 или 5.
Ответа я вообще нигде не нашел, или не так искал.
(если есть решение на PHP тоже выложите плиз для наглядности)

   
 
 автор: sim5   (11.09.2007 в 09:06)   письмо автору
 
   для: absorber   (10.09.2007 в 22:44)
 

Так вам нужно просто прочитать мануал о РНР-функции date(). С ее помощью можно получить информацию о годе (високосный год или нет), число дней в месяце, название дня в неделе, а уж потом посчитать нужное вам труда не составит.

   
 
 автор: CNT   (11.09.2007 в 14:05)   письмо автору
 
   для: sim5   (11.09.2007 в 09:06)
 

Положим, если есть у вас приведенные к числовому виду:

а) год, натуральное число - (от 1 до "чего изволите");
б) порядковый номер месяца в году, начиная с нулевого для января;
в) порядковый номер дня недели, начиная с нулевого для воскресенья,

то всё делается просто:
var Ye = 2007; //задан 2007-й год
var Mo = 8;    //задан сентябрь
var Dw = 4;    //надо определить все четверги заданных месяца-года и их количество

var add28 = '303232332323'.split (''); //дни, добавляемые к числу 28, для получения количества дней в заданном месяце
var MoKD = 28 + add28 [Mo] * 1;        //количество дней в заданном месяце
if (!(Ye % 4) && Mo == 1) MoKD++;      //делаем 29 дней, если заданный месяц - февраль високосного года

var d = new Date ();                                    //создаем объект времени
with (d) {setFullYear (Ye); setMonth (Mo); setDate (1)} //переходим к первому числу заданных месяца-года
var d1 = d.getDay ();                                   //узнаём номер дня недели первого числа заданных месяца-года

var rez = new Array ();                //создаём массив для всех чисел заданных месяца-года, соответствующих искомому дню недели
var s = Dw - d1 + ((d1 > Dw) ? 8 : 1); //находим первый день месяца, соответствующий искомому дню недели

var j = 0;                                           //запускаем цикл 
while (7 * j + s <= MoKD) {rez [j] = 7 * j + s; j++} //запоминаем все заданные дни недели

alert ('Всего - ' + rez.length + ' таких дней недели,\nа именно - ' + rez + ' числа месяца'); //выводим результат

   
 
 автор: absorber   (11.09.2007 в 15:25)   письмо автору
 
   для: sim5   (11.09.2007 в 09:06)
 


ОГРОМНОЕ СПАСИБО что помогли мне сделать на JS.


сделать на ПХП оказалось довольно таки легко

<?php

function howdayweek($month$year$day){

    
$mdays date("t",mktime(0,0,0,$month,1,$year)); // Считаем сколько дней в месяце
    
$howday 0
       for (
$i=1$i <= $mdays$i++ ){   
        
$wday  =  date("D"mktime(000$month$i$year));  // Цикл проходит по всем дням месяца. И //если  условие верно то добавляем +1
              
if ($wday == $day$howday++;  
         }
    return 
$howday;
}

echo 
"Mon - ".howdayweek(102007'Mon');
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования