Технологии

Решено

Помогите написать функцию на PHP которая возвращает вторник следующей недели - вопрос №20533

Уважаемые эксперты,

Кто может написать функцию на PHP которая на вход получает время в секундах с Unix Epoch (January 1 1970 00:00:00 GMT) (возвращаемое значение функции time()) а на выходе возвращает дату — вторник следующей недели в формате DD.MM.YY (например 16.03.10).

Функция будет использована в работе нашего сайта.

Спасибо

Олег март 21, 2010 г.

  • Всего ответов: 2

  • Александр Воробьёв - аватарка

    Александр Воробьёв

    59-й в Технологиях

    По-моему это не сложно:

    function get_nextweekday($tstamp, $next_weekday=1, $dateformat="d. m. Y") {
     
     $nextwd = "next ";
     switch ($next_weekday) {
     case 1:
      $nextwd .= "Monday";
     break;
     case 2:
      $nextwd .= "Tuesday";
     break;
     case 3:
      $nextwd .= "Wednesday";
     break;
     case 4:
      $nextwd .= "Thursday";
     break;
     case 5:
      $nextwd .= "Friday";
     break;
     case 6:
      $nextwd .= "Saturday";
     break;
     case 7:
      $nextwd .= "Sunday";
     break;
     }
     
     $nexttstamp = strtotime($nextwd, $tstamp);
     $date_per_week = date($dateformat, $nexttstamp);

    return $date_per_week;
    }

    Обязательный первый параметр. Остальными параметрами можно задавать любой день недели и форматировать дату как надо, по спецификации РНР для date().

    Если нужен вторник в Вашем случае, вызов функции соответственно: get_nextweekday($tstamp, 2). Если не охота заморачиваться с параметрами, поменяйте на входе $next_weekday=2. Дата по умолчанию форматируется: ДД.ММ.ГГГГ При необходимости тоже можно поменять на входе.

    Кстати, у меня есть написана функция date_ru(), которая форматирует дату, учитывая некоторые особенности русского языка. В частности может выводить месяц в родительном падеже. Смотреть можно тут: http://files.w-st.ws/date_ru.php

    Успехов!!!

    март 21, 2010 г.
    Ответ понравился автору
    Лучший ответ по мнению автора
  • Олег - аватарка

    Олег

    4-й в

    Александр,

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

    Мы только чуточку подправили Ваш код, дописав вначале

    $tstamp = $tstamp + 1*24*60*60;

    Иначе для понедельника вторник следующей недели наступает не через 8 дней, а через 1 день.

    март 22, 2010 г.
  • Александр Воробьёв - аватарка

    Александр Воробьёв

    59-й в Технологиях

    Немножко, конечно, недоучёл.

    Но так функция перестаёт быть универсальной. Работает на понедельник-вторник. Тогда лучше будет добавить

    $nowd = date("w", $tstamp);
    $nowd = 0 ? 7 : $nowd + 1;
    $tstamp = $tstamp + ($next_weekday - $nowd)*24*60*60;

    Будет работать для любого сочетания дней.

     

    март 22, 2010 г.
    Ответ понравился автору

Похожие вопросы

Аккорд WinNET

декабрь 16, 2012 г.

Технологии