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 :: Как определить вторую пятницу месяца?
Покинул форум
Сообщений всего: 25
Дата рег-ции: Февр. 2007 Откуда: Беларусь
Помог: 0 раз(а)
Здравствуйте. Подскажите как можно определить какой датой будет вторая пятница месяца, или первый (последний) понедельник месяца и т.п.?
JustUserR
Отправлено: 19 Марта, 2010 - 18:47:18
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Gover пишет:
Здравствуйте. Подскажите как можно определить какой датой будет вторая пятница месяца, или первый (последний) понедельник месяца и т.п.?
Например с помощью функции http://www.php.su/functions/?mktime вы можете создать временную метку на начало месяца и пролистывая даты в месяце определять соответствуюие дни недели с помощью функции date("w")
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Champion
Отправлено: 19 Марта, 2010 - 19:16:34
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
А лучше определить каким днем недели является первое число месяца и прибавить сколько надо. (Добавление)
Т.е. если первое число месяца среда, то вторая пятница на 9 дней позже. Откуда 9 - ясно? Определить какой день - JustUserR написал как.
JustUserR
Отправлено: 19 Марта, 2010 - 19:18:35
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Champion пишет:
А лучше определить каким днем недели является первое число месяца и прибавить сколько надо
Да можно и так - на самом деле вариантов работы с датами очень много - главное не запутаться что прибавлять а что вычитать
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
jfr
Отправлено: 19 Марта, 2010 - 20:23:30
Посетитель
Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010 Откуда: Таджикистан, Худжанд
Вы ей передаете месяц/год и желаемый день недели и получаее список всех чисел с данным днем недели
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
jfr
Отправлено: 20 Марта, 2010 - 14:51:50
Посетитель
Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010 Откуда: Таджикистан, Худжанд
Помог: 0 раз(а)
[+]
Gover пишет:
Спасибище приогромное
Пожалуйста
movEAX
Отправлено: 20 Марта, 2010 - 17:45:04
Частый посетитель
Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009
таким образом Ваш скрипт должен вычислить иногда следующую пятницу а иногда вторую пятницу относительно текущей (вводимой) дате, а не вторую пятницу того месяца, а Gover спрашивает "Здравствуйте. Подскажите как можно определить какой датой будет вторая пятница месяца". Именно цикл помогает нам вычислить точную вторую пятницу месяца и т.д.
Почему именно цикл? Дни недели у нас всего лишь 7, причем они повторяются циклично , тут нам нужен цикл как никогда
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
jfr пишет:
Ваш скрипт должен вычислить иногда следующую пятницу а иногда вторую пятницу относительно текущей (вводимой) дате, а не вторую пятницу того месяца
Champion пишет:
А лучше определить каким днем недели является первое число месяца и прибавить сколько надо.
jfr пишет:
Почему именно цикл? Дни недели у нас всего лишь 7, причем они повторяются циклично Улыбка , тут нам нужен цикл как никогда
Ну да, а если надо почитать сколько лет прошло с 1901 года по 2010, мы конечно же напишем
for($y = 1901, $c = 0; $y <= 2010; $y++, $c++); echo $c.
Как же без цикла? Он круче вычитания, да.
jfr
Отправлено: 20 Марта, 2010 - 19:51:13
Посетитель
Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010 Откуда: Таджикистан, Худжанд
Помог: 0 раз(а)
[+]
Champion пишет:
jfr пишет:
Ваш скрипт должен вычислить иногда следующую пятницу а иногда вторую пятницу относительно текущей (вводимой) дате, а не вторую пятницу того месяца
Champion пишет:
А лучше определить каким днем недели является первое число месяца и прибавить сколько надо.
jfr пишет:
Почему именно цикл? Дни недели у нас всего лишь 7, причем они повторяются циклично Улыбка , тут нам нужен цикл как никогда
Ну да, а если надо почитать сколько лет прошло с 1901 года по 2010, мы конечно же напишем
for($y = 1901, $c = 0; $y <= 2010; $y++, $c++); echo $c.
Как же без цикла? Он круче вычитания, да.
Champion, я с Вами согласен, но тут у нас задача совсем другая, дни недели всего лишь 7, а месяц у нас без разницы какой (год тем более ), и причем не надо вычислить целый век
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Цикл с ифами можно было бы использовать, если бы ты не знал, в каком порядке идут дни в неделе. Но ты ведь знаешь, в каком они порядке и сколько их. Подумай, насколько цикл с ифами медленнее двух вычитаний.
Да и при том там не только ифы, там дата еще каждый раз вычисляется и форматируется.
jfr
Отправлено: 20 Марта, 2010 - 20:39:05
Посетитель
Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010 Откуда: Таджикистан, Худжанд
Помог: 0 раз(а)
[+]
как раз тут нам не известно в каком порядке идут дни недели сначало месяца, это надо вычислить конечно закономерность тут есть, находя первое число- какой день недели будет и прибавить к ней сколько-то дней чтобы получить например пятницу, и при этом получаем первую пятницу например. И так прибавляя 7 дней можем находить вторую пятницу и т.д. Все это арифметическое вычисление, можно конечно определить точный день необходимой недели, но цикл решает все-таки эту задачу красивее, а код movEAX имеет нимного недостаток. Все-таки я вас не отрицаю Champion.
movEAX
Отправлено: 20 Марта, 2010 - 21:33:21
Частый посетитель
Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009
Помог: 16 раз(а)
jfr пишет:
Почему именно цикл? Дни недели у нас всего лишь 7, причем они повторяются циклично , тут нам нужен цикл как никогда
Если Вам наплевать на производительность, то, что ж, ваше утверждение вполне уместно. Но, я сторонник оптимальной скорости работы кода, поэтому можете меня хоть распять или пытать каленными иглами (не стоит заострять тут внимание, я утрирую) и я все равно буду с Вами не согласен! Представленный мной код не является совершенным, но его легко можно доработать.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.