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 :: Как определить вторую пятницу месяца? [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (4): « 1 [2] 3 4 »   

> Без описания
Champion Супермодератор
Отправлено: 21 Марта, 2010 - 08:49:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




jfr пишет:
раз тут нам не известно в каком порядке идут дни недели сначало месяца
У меня на календаре они идут всегда в одинаковом порядке. Первое число месяца может быть разным днем недели - это да. Но после него порядок не нарушается. А найти расстояние этого дня недели до пятницы всегда можно вычитанием.
И цикл тут никак не красивее и тем более не производительнее.
jfr пишет:
Все-таки я вас не отрицаю Champion.
Это хорошо: я действтельно вполне реален)
 
 Top
JustUserR
Отправлено: 21 Марта, 2010 - 11:47:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




movEAX пишет:
Способ попроще и без циклов
А число месяца откуда вы взяли - нужно указать только месяц и год и по сути составить для него календарь - кстати в моем вариатнте так и есть хотя можно упростить ег и оставить цикл только на 7 дней а длее прибавлять в массив просто соответствующие значения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Champion Супермодератор
Отправлено: 21 Марта, 2010 - 12:23:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




JustUserR, jfr, вы упорно настаиваете, что вариант с циклом, на каждом шаге которого еще и вычисления происходят, превосходит чем-то вариант без цикла?
 
 Top
jfr
Отправлено: 21 Марта, 2010 - 17:10:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010  
Откуда: Таджикистан, Худжанд


Помог: 0 раз(а)

[+]


вот без цикла, не буду спорить Улыбка
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $day = 21;
  4. $month = 3;
  5. $year = 2010;
  6. $dt = $day%7-date('w',mktime(0,0,0,$month,$day,$year))+12;
  7. $second_friday=date("M-d-Y", mktime(0,0,0,$month,$dt,$year));
  8. echo $second_friday;
  9. ?>
  10.  

(Отредактировано автором: 21 Марта, 2010 - 19:05:44)

 
 Top
JustUserR
Отправлено: 22 Марта, 2010 - 17:01:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




jfr пишет:
$day = 21;
Откуда вы берете $day=21 - это такая константа для дней недели в марте что-ли?
Champion пишет:
JustUserR, jfr, вы упорно настаиваете, что вариант с циклом, на каждом шаге которого еще и вычисления происходят, превосходит чем-то вариант без цикла?
Далеко не настаиваю - и как пример привел возможное решение данонго вопроса когда вычисляется первый день недели в месяце и потом прибавляется нужное число дней и сдвиг - например для нахождения i-ой пятницы берем (5-$first_wday)+1+7*$i


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
movEAX
Отправлено: 22 Марта, 2010 - 17:51:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




JustUserR пишет:
Откуда вы берете $day=21 - это такая константа для дней недели в марте что-ли?

JustUserR пишет:
А число месяца откуда вы взяли - н

PHP:
скопировать код в буфер обмена
  1. function getScndFrd($m,$y){
  2.         $ut = strtotime('01-'.$m.'-'.$y); //unix time
  3.         $wd = date('w',$ut); //week day
  4.         return 13 - $wd;
  5. }
  6. echo getScndFrd(12,1994);


Просто и работает! Жду комментариев от JustUseR


-----
армия.. самое убогое место
 
 Top
JustUserR
Отправлено: 22 Марта, 2010 - 18:39:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




movEAX пишет:
Просто и работает! Жду комментариев от JustUseR
Насчет только что приведенной вами функции я и не спорю - могу сказать что вы сделали как раз по моей формуле
JustUserR пишет:
(5-$first_wday)+1+7*$i
Разумеется второй понедельник получает при подстановке $i=0 (Отсчет с нуля Улыбка
Могу обобщить вашу функцию и мой метод
PHP:
скопировать код в буфер обмена
  1. function get_wday($m,$y,$wday,$i){
  2. $wd=date('w',strtotime('01-'.$m.'-'.$y)); // Получаем первый день недели
  3. return (($wday-$wd)+1+7*$i); // Выводим i-ый день недели
  4. }
  5. echo get_wday(3,2010,5,1); // Вторая пятница марта 2010 года


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
jfr
Отправлено: 23 Марта, 2010 - 11:39:38
Post Id



Посетитель


Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010  
Откуда: Таджикистан, Худжанд


Помог: 0 раз(а)

[+]


JustUserR пишет:
jfr пишет:
$day = 21;
Откуда вы берете $day=21 - это такая константа для дней недели в марте что-ли?


вместо 21 можно вставить любое число, и переменная $day можно присвоить любым методом без разницы, не зависимо от того какое число берет переменная $day можно вычислить вторую пятницу месяца.


Отредактировано модератором: Champion, 23 Марта, 2010 - 14:23:39
Вот ту часть, на которую отвечаешь, - ее и цитируй
 
 Top
JustUserR
Отправлено: 23 Марта, 2010 - 14:11:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




jfr пишет:
Вместо 21 можно вставить любое число
А почему именно 21 вы написали? Оно случайно или как-то взаимосвязано именно со второй пятницей месяца
В ответ также жду комментариев по прдложенной мной функции


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Champion Супермодератор
Отправлено: 23 Марта, 2010 - 14:25:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




JustUserR пишет:
жду комментариев по прдложенной мной функции
Не могу осмыслить результат работы get_wday(3,2010,-5,98) Улыбка
 
 Top
JustUserR
Отправлено: 23 Марта, 2010 - 14:28:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Champion пишет:
Не могу осмыслить результат работы get_wday(3,2010,-5,98)
Не могу осмыслить результат работы echo getScndFrd(-12,1994) Улыбка
О проверке аргументов речь пока не шла - но думаю если надо тот кому нужна эта функция добавит соответствующие проверки


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
jfr
Отправлено: 23 Марта, 2010 - 14:42:59
Post Id



Посетитель


Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010  
Откуда: Таджикистан, Худжанд


Помог: 0 раз(а)

[+]


JustUserR пишет:
jfr пишет:
Вместо 21 можно вставить любое число
А почему именно 21 вы написали? Оно случайно или как-то взаимосвязано именно со второй пятницей месяца
В ответ также жду комментариев по прдложенной мной функции


не связано число 21 с пятницей, можно вставить 22 например Улыбка , если молчу и не написал комментариев по поводу вашей функцией, значит с вашей функцией все окей Радость .
Можно конечно делать мой код ввиде функции, чтобы вычислить не только пятницу и не только вторую Улыбка
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. function search_week($day,$month,$year,$day_of_week,$which) {
  5.  
  6. $dt = $day%7-date('w',mktime(0,0,0,$month,$day,$year))+$day_of_week+7*$which-7;
  7. $what_u_need=date("M-d-Y", mktime(0,0,0,$month,$dt,$year));
  8. echo $what_u_need;
  9. }
  10. search_week(23,3,2010,5,2);       //      вторая пятница
  11. search_week(23,3,2010,1,1); //          первый понедельник
  12.  
  13. ?>
 
 Top
Champion Супермодератор
Отправлено: 23 Марта, 2010 - 15:16:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




jfr, а давай еще восемь переменных сюда добавим и дадим им значения какие-нибудь значения... Это я всё к тому, зачем бессмысленные переменные, которые ни на что не влияют (вот $day)?
 
 Top
jfr
Отправлено: 23 Марта, 2010 - 15:39:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010  
Откуда: Таджикистан, Худжанд


Помог: 0 раз(а)

[+]


Champion пишет:
jfr, а давай еще восемь переменных сюда добавим и дадим им значения какие-нибудь значения... Это я всё к тому, зачем бессмысленные переменные, которые ни на что не влияют (вот $day)?


именно через $day - вычисляю необходимый день недели, не используя еще одной функции как strtotime. Как я в коде JustUserR увидел, он с помошью strtotime сначало вычисляет первое число необходимого месяца. Однако можно и без этой функциию Улыбка

(Отредактировано автором: 23 Марта, 2010 - 15:55:41)

 
 Top
Champion Супермодератор
Отправлено: 23 Марта, 2010 - 15:51:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Да ты что? Т.е. результат будет меняться в зависимости от day?
Короче вариант JustUserRа лучше.
 
 Top
Страниц (4): « 1 [2] 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB