Если у меня есть $date
YYYY-mm-dd
и вы хотите получить определенный $day
(заданный 0 (воскресенье) до 6 (суббота)) недели, в которой находится YYYY-mm-dd
.
Например, если я получил 2012-10-11
как $date
и 5
как $day
, я хочу получить 2012-10-12
, если у меня есть 0
как $day
, 2012-10-14
РЕДАКТИРОВАТЬ:
Большинство из вас неправильно поняли это. Я получил дату, $date
и хочу получить день, указанный в 0-6 той же недели.
Так что нет, я не хочу день $date
…
Я думаю, это то, что вы хотите.
$dayofweek = date('w', strtotime($date)); $result = date('Ym-d', strtotime(($day - $dayofweek).' day', strtotime($date)));
Вы можете использовать функцию date ():
date('w'); // day of week
или
date('l'); // dayname
Пример функции для получения дня №:
function getWeekday($date) { return date('w', strtotime($date)); } echo getWeekday('2012-10-11'); // returns 4
Пытаться
$date = '2012-10-11'; $day = 1; $days = array('Sunday', 'Monday', 'Tuesday', 'Wednesday','Thursday','Friday', 'Saturday'); echo date('Ym-d', strtotime($days[$day], strtotime($date)));
Просто:
2012-10-11 как $ date и 5 как $ day
<?php $day=5; $w = date("w", strtotime("2011-01-11")) + 1; // you must add 1 to for Sunday echo $w; $sunday = date("Ymd", strtotime("2011-01-11")-strtotime("+$w day")); $result = date("Ymd", strtotime($sunday)+strtotime("+$day day")); echo $result; ?>
$ Result = '2012-10-12' – это то, что вы хотите.
Боюсь, вам нужно сделать это вручную. Получить текущий день недели, рассчитать смещение и добавить смещение к дате.
$current = date("w", $date) $offset = $day - $current $new_date = new DateTime($date) ->add( new DateInterval($offset."D") )->format('Ym-d')
Руководство PHP написало:
w Числовое представление дня недели
Поэтому вы можете построить дату с mktime и использовать в ней date("w", $yourTime);