Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Даты на неделю
 
 автор: Front   (27.11.2008 в 11:19)   письмо автору
 
 

Всем добрый день!
В коде узнаю номер недели в году:

$week = date('W');

Подскажите как по заданному $week вывести все даты указанной недели!
Заранее спасибо!

  Ответить  
 
 автор: sim5   (27.11.2008 в 12:33)   письмо автору
 
   для: Front   (27.11.2008 в 11:19)
 

Лучше получить:
<?
$w 
date("w"); //день недели
$d date("j"); //число
$m date("t"); //число дней в месяце

и из этого узнать.

  Ответить  
 
 автор: Front   (27.11.2008 в 12:36)   письмо автору
 
   для: sim5   (27.11.2008 в 12:33)
 

$w = date("w"); //день недели 

Я так понимаю, что описались?

$w = date("W");//день недели


Смотреть функцию mktime?

  Ответить  
 
 автор: sim5   (27.11.2008 в 12:41)   письмо автору
 
   для: Front   (27.11.2008 в 12:36)
 

Нет, не описался ;-) Зачем вам номер недели в году? Вам нужно знать дни текущей недели надо понимать, а значит достаточно знать число, порядковый номер этого числа в неделе, и число дней в месяце. Из этого можете узнать остальное.

  Ответить  
 
 автор: Front   (01.12.2008 в 10:05)   письмо автору
 
   для: 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));
                      }

но сегодня показывает прошлую неделю! Подскажите, как сделать чтобы показывал текущую?
Спасибо

  Ответить  
 
 автор: sim5   (01.12.2008 в 10:28)   письмо автору
 
   для: Front   (01.12.2008 в 10:05)
 

$k = strtotime("Monday");

А к чему цикл, если вы им узнаете только воскресенье текущей недели? Достаточно тогда date("Y-d-m", strtotime("Sunday"));

  Ответить  
 
 автор: Front   (01.12.2008 в 11:34)   письмо автору
 
   для: sim5   (27.11.2008 в 12:41)
 

А какой порядок действий должен быть, если я буду находить:
$w = date("w"); //день недели 
$d = date("j"); //число 
$m = date("t"); //число дней в месяце

  Ответить  
 
 автор: sim5   (01.12.2008 в 11:52)   письмо автору
 
   для: 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;
}  

  Ответить  
 
 автор: Front   (01.12.2008 в 12:04)   письмо автору
 
   для: sim5   (01.12.2008 в 11:52)
 

Скрипт будет выводить даты на следующую и текущую неделю!
Получается чтобы вывести числа на следующую неделю, нужно будет находить переменные $d и $n следующий образом:
$d = strtotime("next Monday"); //начало недели 
$n = strtotime("next Sunday"); //конец недели 

Верно?

  Ответить  
 
 автор: sim5   (01.12.2008 в 12:12)   письмо автору
 
   для: Front   (01.12.2008 в 12:04)
 

Да. Для прошедшей недели нужно делать запрос как "last', а для следующей как "next".

  Ответить  
 
 автор: Front   (01.12.2008 в 12:16)   письмо автору
 
   для: sim5   (01.12.2008 в 12:12)
 

Спасибо за помощь!

  Ответить  
 
 автор: Front   (01.12.2008 в 12:23)   письмо автору
 
   для: sim5   (01.12.2008 в 12:12)
 

Sorry, но почему то код работает только для текущей недели! На следующую ничего не выдает!

  Ответить  
 
 автор: sim5   (01.12.2008 в 12:44)   письмо автору
 
   для: 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");

  Ответить  
 
 автор: Drago   (01.12.2008 в 16:00)   письмо автору
 
   для: sim5   (01.12.2008 в 12:44)
 

>PS. Не знаю, может что-то и с Денвером связано, но бывает сбой в запросами типа "next".

Как показала практика, запрос "next" опирается на текущий день недели.
То есть, если, к примеру, сегодня понедельник, то метки полученные запросами "tuesday" и "next tuesday" будут одинаковы. А метки полученные запросами "monday" и "next monday" - разные.

  Ответить  
 
 автор: sim5   (01.12.2008 в 16:20)   письмо автору
 
   для: Drago   (01.12.2008 в 16:00)
 

Вот в чем дело, возможно и так. В общем лучше не использовать.

  Ответить  
 
 автор: Front   (02.12.2008 в 11:13)   письмо автору
 
   для: sim5   (01.12.2008 в 16:20)
 

Так а что лучше использовать тогда?

  Ответить  
 
 автор: sim5   (02.12.2008 в 11:32)   письмо автору
 
   для: Front   (02.12.2008 в 11:13)
 

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

  Ответить  
 
 автор: Front   (02.12.2008 в 12:56)   письмо автору
 
   для: 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, соответственно условие не выполняется

На текущую неделю та же беда!

А разве нет другого решения, о котором вы говорили ранее:

День недели
Количество дней в месяце
И само число?

  Ответить  
 
 автор: sim5   (02.12.2008 в 13:17)   письмо автору
 
   для: Front   (02.12.2008 в 12:56)
 

Как показывает практика..., да все они в таком виде опираются на текущий день, вот от сюда все и получается. Другое решение есть (о котором ранее), тут чистая арифметика, которую, думаю, и объяснять не надо. Я же попробую нечто другое.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования