Технологии
Решено
Помогите написать функцию на PHP которая возвращает вторник следующей недели - вопрос №20533
Уважаемые эксперты,
Кто может написать функцию на PHP которая на вход получает время в секундах с Unix Epoch (January 1 1970 00:00:00 GMT) (возвращаемое значение функции time()) а на выходе возвращает дату — вторник следующей недели в формате DD.MM.YY (например 16.03.10).
Функция будет использована в работе нашего сайта.
Спасибо
Олег март 21, 2010 г.
-
Всего ответов: 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
Успехов!!!
Лучший ответ по мнению автора -
Александр,
Спасибо, теперь благодаря Вам после следующего апдейта сайта пользователи будут видеть точную дату когда будет обработана их заявка на вывод денег.
Мы только чуточку подправили Ваш код, дописав вначале
$tstamp = $tstamp + 1*24*60*60;
Иначе для понедельника вторник следующей недели наступает не через 8 дней, а через 1 день.
-
Немножко, конечно, недоучёл.
Но так функция перестаёт быть универсальной. Работает на понедельник-вторник. Тогда лучше будет добавить
$nowd = date("w", $tstamp);
$nowd = 0 ? 7 : $nowd + 1;
$tstamp = $tstamp + ($next_weekday - $nowd)*24*60*60;Будет работать для любого сочетания дней.
Похожие вопросы