Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> определить номер месяца, даты 
:(
    Опции темы
Annuta
Дата 7.4.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 3.10.2006
Где: Dubna

Репутация: нет
Всего: 1



Привет народ, пытаюсь написать скриптик который определяет номер недели в месяце...
вот что смогла навоять я 
Код

$number=0;
While($k < 7)
    {        
               $mktime1=mktime(0,0,0,$mon,$day-$t,$yy); 
       $Dtime = strftime('%m',$mktime1);
    
        if(($Dtime <> $mon) OR ($t > 31)) {$k+=8;} else {$number++;$k++;}
        $t+=7;            
    }

я вычитаю семь дней и смотрю если номер месяца не изменился = то иду дальше иначе заканчиваю цикл...
... беру две даты - 30 декабря и 31 декабря 2007 года -- получаю один и тот же номер --- хотя по идеи они разные...
  Я понимаю что моя прога так их и считает, но как мне её пределать (или может у кого другие идеи) чтобы всё работалло корректно...
Заранее спасибо...
--------------------
Программист - это комбинация лени и логики !
PM MAIL   Вверх
SelenIT
Дата 7.4.2007, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Annuta, для начала уточните, что Вы считаете первой неделей месяца - период до 7-го числа или до первого воскресенья?

...и не нервничайте Вы так, незачем так часто жать на кнопку отправки ;) Вас уже услышали и в беде не бросят!

Это сообщение отредактировал(а) SelenIT - 7.4.2007, 20:13


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
SelenIT
Дата 7.4.2007, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Ладно, так и быть, напишу ответы для обоих случаев. Если "неделей месяца" считается просто семидневка (1-7, 8-14 и т.д.), то все вообще элементарно в одно действие - ceil($day/7). Если же (что скорее всего и предполагается), неделей считается период с понедельника по воскресенье (с воскресенья по субботу для американцев) включительно, то как-то так:
Код

function numWeekOfMonth($month, $day, $year) {
    $ndn = (date("w", mktime(0,0,0,$month, $day, $year)) + 6) % 7; // текущий день недели, 0 - пн, 1-вт, ..., 6 - вс
    $nd1 = (date("w", mktime(0,0,0,$month, 1, $year)) + 6) % 7; // день недели первого дня месяца
    return ($day - $ndn + $nd1 - 1)/7 + 1;
}

Для "американских" недель - еще проще:
Код

function americanNumWeekOfMonth($month, $day, $year) {
    return ($day - date("w", mktime(0,0,0,$month, $day, $year)) + date("w", mktime(0,0,0,$month, 1, $year)) - 1)/7 + 1;
}

потому что PHP-шная date("w") как раз под них и "заточена".

А в другом экземпляре темы дан еще более красивый ответ, мне даже за своё решение стыдно стало...

Это сообщение отредактировал(а) SelenIT - 8.4.2007, 11:11


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
xolod
Дата 8.4.2007, 05:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 24.5.2005
Где: Когда: Что:

Репутация: 4
Всего: 13



Код

$weekNum = date("W") - date("W",strtotime(date("Y-m-01"))) + 1;
echo("Идет ".$weekNum."-ая неделя месяца");

У вас хорошая подпись, только не вижу лени в попытке вашего решения. В своем вижу.
PM MAIL   Вверх
Annuta
Дата 8.4.2007, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 3.10.2006
Где: Dubna

Репутация: нет
Всего: 1



... спасибо...  smile  народ... буду учиться и лениться...  smile 
--------------------
Программист - это комбинация лени и логики !
PM MAIL   Вверх
mishaSL
Дата 9.4.2007, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Annuta @  8.4.2007,  17:10 Найти цитируемый пост)
буду учиться

Учиться это хорошо, только просьба в следующий раз не надо создавать дубликаты тем.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.