Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как определить вторую пятницу месяца? [4]
Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010 Откуда: Таджикистан, Худжанд
Помог: 0 раз(а)
[+]
О проверке аргументов речь пока не шла - но думаю если надо тот кому нужна эта функция добавит соответствующие проверки
Champion
Отправлено: 25 Марта, 2010 - 08:36:56
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
jfr пишет:
MovEAX, это Чемпион не мог осмыслить
А точне, JustUser вроде. В ответ на то, что я указал ему, что у него данные не проверяются, он указал на такую же ошибку у movEAX, вариант которого был лучше на тот момент. А штука не в отрицательном значении, а в любом, которое не [1..12] в месяце.
Думаю, если никто не будет против, можно тему почистить и закрыть?
JustUserR
Отправлено: 25 Марта, 2010 - 14:36:29
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Champion пишет:
А точне, JustUser вроде. В ответ на то, что я указал ему, что у него данные не проверяются, он указал на такую же ошибку у movEAX, вариант которого был лучше на тот момент. А штука не в отрицательном значении, а в любом, которое не [1..12] в месяце
Речь вообще идет не на проверку вводимых аргументов на правильность - пусть это остается на совести пользователя!
А теперь внимание о чем же шла речь - мы ищем какой день недели будет у первого дня месяца (Пусть это X и определяем разницу искомого дня недели (Пусть это Y с ним то есть X-Y - но ведь данная разность может быть и отрицательносй и в таком случае первый искомый день недели имеет индекс 1 - в противоположнос случае ноль
Финальный вариант
$wd=date('w',strtotime('01-'.$m.'-'.$y));// Получаем первый день недели
$j=(($wday-$wd)<0) ? $i:$i+1;// Вырвниваем чтобы первый искомый день был всегда первым
return(($wday-$wd)+1+7*$j);// Выводим i-ый день недели
}
echo get_wday(3,2010,5,1);// Вторая пятница марта 2010 года
Champion пишет:
Думаю, если никто не будет против, можно тему почистить и закрыть?
Только чистить не слишком сильно а закрыть можно но я пока это делать не буду
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Champion
Отправлено: 25 Марта, 2010 - 14:43:41
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
JustUserR пишет:
Только чистить не слишком сильно а закрыть можно но я пока это делать не буду
Тогда ты потом сделай) Ты активнее тут обсуждал, тебе виднее, где главное.
jfr
Отправлено: 27 Марта, 2010 - 19:49:56
Посетитель
Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010 Откуда: Таджикистан, Худжанд
$wd=date('w',strtotime('01-'.$m.'-'.$y));// Получаем первый день недели
$j=(($wday-$wd)<0) ? $i:$i+1;// Вырвниваем чтобы первый искомый день был всегда первым
return(($wday-$wd)+1+7*$j);// Выводим i-ый день недели
}
echo get_wday(3,2010,5,1);// Вторая пятница марта 2010 года
JustUserR, этот код все-таки еще имеет недостаток, проверьте первый понедельник и второй понедельник в январе 2010 года, увидете недостатки, вот конечный код ,
результат точный...
search_week(1,2010,1,1);// первый понедельник в январе 2010г (4 января)
?>
JustUserR
Отправлено: 28 Марта, 2010 - 14:09:57
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Champion пишет:
Тогда ты потом сделай) Ты активнее тут обсуждал, тебе виднее, где главное.
Спасибо Почистить-то я могу - главное чтобы участники темы не обиделись - надо выбрать основное
jfr пишет:
JustUserR, этот код все-таки еще имеет недостаток, проверьте первый понедельник и второй понедельник в январе 2010 года, увидете недостатки, вот конечный код
Догадываюсь в чем дело - в тренарном опеаторе в части else должно быть $i-1
Ваш финальный вариант кода конечно тоже хороший
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
shakalaka
Отправлено: 24 Сентября, 2010 - 10:50:09
Новичок
Покинул форум
Сообщений всего: 1
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
Здравствуйте, извините, что поднимаю тему, но не могли бы вы показать на примере выше, как можно выбрать каждый третий либо второй день недели. начиная с сегодншнего дня, например.
Заранее спасибо
Roha
Отправлено: 04 Апреля, 2012 - 15:02:35
Новичок
Покинул форум
Сообщений всего: 1
Дата рег-ции: Апр. 2012
Помог: 0 раз(а)
to jfr:
Немного подправил код, так как были проблемы с первым воскресеньем месяца, если оно первое число. Но теперь функция по идее всё выдаёт правильно:
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.