|
|
|
| Привет всем.
Подскажите, кто знает как на Java Script посчитать кол-во понедельников или другого дня недели в определенном месяце года.
Например: Сентябрь 2007 года как высчитать сколько в нем понедельников? 4 или 5.
Ответа я вообще нигде не нашел, или не так искал.
(если есть решение на PHP тоже выложите плиз для наглядности) | |
|
|
|
|
|
|
|
для: absorber
(10.09.2007 в 22:44)
| | Так вам нужно просто прочитать мануал о РНР-функции date(). С ее помощью можно получить информацию о годе (високосный год или нет), число дней в месяце, название дня в неделе, а уж потом посчитать нужное вам труда не составит. | |
|
|
|
|
|
|
|
для: 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 + ' числа месяца'); //выводим результат
|
| |
|
|
|
|
|
|
|
для: 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(0, 0, 0, $month, $i, $year)); // Цикл проходит по всем дням месяца. И //если условие верно то добавляем +1
if ($wday == $day) $howday++;
}
return $howday;
}
echo "Mon - ".howdayweek(10, 2007, 'Mon');
?>
|
| |
|
|
|