За последние 24 часа нас посетили 16888 программистов и 1647 роботов. Сейчас ищут 918 программистов ...

Вывод даты начала и конца недели

Тема в разделе "PHP для новичков", создана пользователем Alekto, 16 июн 2008.

  1. Alekto

    Alekto Активный пользователь

    С нами с:
    30 апр 2008
    Сообщения:
    5
    Симпатии:
    0
    Адрес:
    Казахстан
    Здрасти всем. Мне нужно вывести на экран все понедельники и субботы всех месяцев (т.е. даты начала и конеца недели). Первое что пришло в голову определить конец недели как: начало недели +5, а начало недели=конец недели +2 (т.к. два выходных дня).
    А что делать если первая неделя следующего месяц начинается не с первого числа?
    Т.е. у меня проблема с выводом даты окончания последней недели месяца.
    Помогите плиз, кто знает.
     
  2. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    У меня это так реализовано:
    PHP:
    1.  
    2. <?PHP
    3. $cur_time = time();
    4. $week_start =  strtotime("last Monday",mktime(0,0,0,date("n",$cur_time),date("j",$cur_time),date("Y",$cur_time)));
    5. $week_end =  $week_start+7*24*60*60;
    6. ?>
    7.  
     
  3. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    09.06.2008 00:00:00
    16.06.2008 11:51:07

    PHP:
    1. <?php
    2. $cur_time = time();
    3. $week_start =  strtotime("last Monday",mktime(0,0,0,date("n",$cur_time),date("j",$cur_time),date("Y",$cur_time)));
    4. $week_end =  $week_start+7*24*60*60;
    5.  
    6. echo date('d.m.Y H:i:s', $week_start), '<br/>', date('d.m.Y H:i:s', time());
    7.  
    8. show_source(__FILE__);
    9. ?>
    я что-то делаю не так?)
     
  4. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    echo date('d.m.Y H:i:s', $week_start), '<br/>', date('d.m.Y H:i:s', $week_end);
     
  5. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    почему он мне начало этой недели показывает как 9.06? сегодня вроде как понедельник!
     
  6. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. <?php
    2. $offset = mktime(0, 0, 0, 1, 1, date('Y'));
    3.  
    4. for ($i = 0; $i <= 51; $i += 1, $offset += 604800) {
    5.     $m = strtotime('Monday', $offset);
    6.     $s = strtotime('Saturday', $offset);
    7.  
    8.     print date('r', $m) . ' - ' . date('r', $s) . '<br />';
    9. }
    10.  
    Или в стиле Perl :)

    PHP:
    1. <?php
    2. for ($i = 0, $offset = mktime(0, 0, 0, 1, 1, date('Y')); $i < 51; $i += 1, $offset += 604800) print date('r', strtotime('Monday', $offset)) . ' - ' . date('r', strtotime('Saturday', $offset)) . '<br />';
     
  7. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    DarkElf
    Глюк. )))

    Попробуй так (не проверял):

    PHP:
    1. <?php
    2.  $cur_time = time();
    3.  $week_start =  (date("w")==1)?strtotime("0 hours 0 seconds") : strtotime("last Monday",mktime(0,0,0,date("n",$cur_time),date("j",$cur_time),date("Y",$cur_time)));
    4.  $week_end =  $week_start+7*24*60*60;
    5.  
    6.  echo date('d.m.Y H:i:s', $week_start), '<br/>', date('d.m.Y H:i:s', $week_end);
    7.  
    8.  ?>