Если у меня есть $date
YYYY-mm-dd
и я хочу получить конкретную $day
(указанную от 0 (воскресенье) до 6 (суббота)) недели, которая YYYY-mm-dd
находится в.
Например, если я получил 2012-10-11
as $date
and 5
as $day
, я хочу получить 2012-10-12
, если я получил 0
as $day
,2012-10-14
РЕДАКТИРОВАТЬ:
Большинство из вас неправильно это поняли. У меня есть дата, $date
и я хочу получить день, указанный 0-6 той же недели $date
.
Так что нет, мне не нужен день $date
...
Ответы:
Я думаю, это то, что вам нужно.
$dayofweek = date('w', strtotime($date)); $result = date('Y-m-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('Y-m-d', strtotime($days[$day], strtotime($date)));
источник
2012-10-14
при вводе0
, @Rezigned возвращает2012-10-07
Если ваша дата уже a
DateTime
илиDateTimeImmutable
вы можете использоватьformat
метод.$day_of_week = intval($date_time->format('w'));
Строка формата идентична той, которая используется функцией даты .
Чтобы ответить на заданный вопрос:
$date_time->modify($target_day_of_week - $day_of_week . ' days');
источник
В руководстве по PHP сказано:
Поэтому вы можете создать дату с помощью mktime и использовать в ней
date("w", $yourTime);
источник
Просто:
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("Y-m-d", strtotime("2011-01-11")-strtotime("+$w day")); $result = date("Y-m-d", 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('Y-m-d')
источник
Мне пришлось использовать аналогичное решение для португальского (Бразилия):
<?php $scheduled_day = '2018-07-28'; $days = ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb']; $day = date('w',strtotime($scheduled_day)); $scheduled_day = date('d-m-Y', strtotime($scheduled_day))." ($days[$day])"; // provides 28-07-2018 (Sáb)
источник
<?php echo date("H:i", time()); ?> <?php echo $days[date("l", time())] . date(", d.m.Y", time()); ?>
Просто, это должно помочь
источник