|
|
|
| Всем добрый день!
В коде узнаю номер недели в году:
Подскажите как по заданному $week вывести все даты указанной недели!
Заранее спасибо! | |
|
|
|
|
|
|
|
для: Front
(27.11.2008 в 11:19)
| | Лучше получить:
<?
$w = date("w"); //день недели
$d = date("j"); //число
$m = date("t"); //число дней в месяце
|
и из этого узнать. | |
|
|
|
|
|
|
|
для: sim5
(27.11.2008 в 12:33)
| |
$w = date("w"); //день недели
|
Я так понимаю, что описались?
$w = date("W");//день недели
|
Смотреть функцию mktime? | |
|
|
|
|
|
|
|
для: Front
(27.11.2008 в 12:36)
| | Нет, не описался ;-) Зачем вам номер недели в году? Вам нужно знать дни текущей недели надо понимать, а значит достаточно знать число, порядковый номер этого числа в неделе, и число дней в месяце. Из этого можете узнать остальное. | |
|
|
|
|
|
|
|
для: sim5
(27.11.2008 в 12:41)
| | Сделал так:
$k = strtotime("last Monday");
$Year = date("Y",$k);
$Month = date("m",$k);
$Day = date("d",$k);
for ($i = $Day;$i<=$Day+6;$i++)
{
$date = date('d.m.Y', mktime(0, 0, 0, $Month, $i, $Year));
}
|
но сегодня показывает прошлую неделю! Подскажите, как сделать чтобы показывал текущую?
Спасибо | |
|
|
|
|
|
|
|
для: Front
(01.12.2008 в 10:05)
| | $k = strtotime("Monday");
А к чему цикл, если вы им узнаете только воскресенье текущей недели? Достаточно тогда date("Y-d-m", strtotime("Sunday")); | |
|
|
|
|
|
|
|
для: sim5
(27.11.2008 в 12:41)
| | А какой порядок действий должен быть, если я буду находить:
$w = date("w"); //день недели
$d = date("j"); //число
$m = date("t"); //число дней в месяце
|
| |
|
|
|
|
|
|
|
для: Front
(01.12.2008 в 11:34)
| | Вам что в конечном итоге надо, все чила текущей недели, или что? Если вас интересует текущая неделя, то все гораздо проще:
<?
$d = strtotime("Monday"); //начало недели
$n = strtotime("Sunday"); //конец недели
//зная, что день содержит 86400 сек
while ($d <= $n) {
echo date("d.m.Y", $d)."<br>";
$d += 86400;
}
|
| |
|
|
|
|
|
|
|
для: sim5
(01.12.2008 в 11:52)
| | Скрипт будет выводить даты на следующую и текущую неделю!
Получается чтобы вывести числа на следующую неделю, нужно будет находить переменные $d и $n следующий образом:
$d = strtotime("next Monday"); //начало недели
$n = strtotime("next Sunday"); //конец недели
|
Верно? | |
|
|
|
|
|
|
|
для: Front
(01.12.2008 в 12:04)
| | Да. Для прошедшей недели нужно делать запрос как "last', а для следующей как "next". | |
|
|
|
|
|
|
|
для: sim5
(01.12.2008 в 12:12)
| | Спасибо за помощь! | |
|
|
|
|
|
|
|
для: sim5
(01.12.2008 в 12:12)
| | Sorry, но почему то код работает только для текущей недели! На следующую ничего не выдает! | |
|
|
|
|
|
|
|
для: Front
(01.12.2008 в 12:23)
| | Да, действительно, неверно воскресенье определяет так. Ну тогда пишите так:
$d = strtotime("next monday");
$n = strtotime("sunday +7 days");
|
PS. Не знаю, может что-то и с Денвером связано, но бывает сбой в запросами типа "next". Лучше тогда писать как "день недели +7 days", или так:
$d = strtotime("monday next week");
$n = strtotime("sunday next week");
|
| |
|
|
|
|
|
|
|
для: sim5
(01.12.2008 в 12:44)
| | >PS. Не знаю, может что-то и с Денвером связано, но бывает сбой в запросами типа "next".
Как показала практика, запрос "next" опирается на текущий день недели.
То есть, если, к примеру, сегодня понедельник, то метки полученные запросами "tuesday" и "next tuesday" будут одинаковы. А метки полученные запросами "monday" и "next monday" - разные. | |
|
|
|
|
|
|
|
для: Drago
(01.12.2008 в 16:00)
| | Вот в чем дело, возможно и так. В общем лучше не использовать. | |
|
|
|
|
|
|
|
для: sim5
(01.12.2008 в 16:20)
| | Так а что лучше использовать тогда? | |
|
|
|
|
|
|
|
для: Front
(02.12.2008 в 11:13)
| | Чтобы не запутаться, ненароком, добавляйте к дню недели 7 дней или указывайте этот день как день следующей недели. Оба примера показаны выше. | |
|
|
|
|
|
|
|
для: sim5
(02.12.2008 в 11:32)
| | На следующую неделю:
$da = strtotime("monday next week");
$n = strtotime("sunday next week");
или
$da = strtotime("monday +7 days");
$n = strtotime("sunday +7 days");
while ($da <= $n)
{
$date = date("d.m.Y", $da);
$da += 86400;
}
|
Ничего не выводит, так как переменная $da>$n, соответственно условие не выполняется
На текущую неделю та же беда!
А разве нет другого решения, о котором вы говорили ранее:
День недели
Количество дней в месяце
И само число? | |
|
|
|
|
|
|
|
для: Front
(02.12.2008 в 12:56)
| | Как показывает практика..., да все они в таком виде опираются на текущий день, вот от сюда все и получается. Другое решение есть (о котором ранее), тут чистая арифметика, которую, думаю, и объяснять не надо. Я же попробую нечто другое. | |
|
|
|