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

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

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

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

Спасибо

21.03.10
2 ответа

Лучший ответ по мнению автора

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

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.03.10
Лучший ответ по мнению автора

Другие ответы

Александр,

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

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

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

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

22.03.10

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

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

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

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

 

22.03.10

Alexander

Читать ответы

Дима

Читать ответы
Посмотреть всех экспертов из раздела Технологии > PHP
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store