Si tengo un $date YYYY-mm-ddy quiero obtener un específico $day(especificado por 0 (domingo) a 6 (sábado)) de la semana que YYYY-mm-ddestá en.
Por ejemplo, si tengo 2012-10-11como $datey 5como $day, quiero obtener 2012-10-12, si tengo 0como $day,2012-10-14
EDITAR:
La mayoría de ustedes lo entendieron mal. Tengo una fecha $datey quiero obtener un día especificado por 0-6 de la misma semana $date.
Entonces no, no quiero el día de $date...

Respuestas:
Creo que esto es lo que quieres.
$dayofweek = date('w', strtotime($date)); $result = date('Y-m-d', strtotime(($day - $dayofweek).' day', strtotime($date)));fuente
Puede utilizar la función date ():
date('w'); // day of weeko
date('l'); // daynameFunción de ejemplo para obtener el número de día:
function getWeekday($date) { return date('w', strtotime($date)); } echo getWeekday('2012-10-11'); // returns 4fuente
Tratar
$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)));fuente
2012-10-14cuando0ingresa, @Rezigned devuelve2012-10-07Si tu fecha ya es una
DateTimeoDateTimeImmutablepuedes usar elformatmétodo.$day_of_week = intval($date_time->format('w'));La cadena de formato es idéntica a la utilizada por la función de fecha .
Para responder a la pregunta deseada:
$date_time->modify($target_day_of_week - $day_of_week . ' days');fuente
PHP Manual dijo:
Por lo tanto, puede construir una fecha con mktime y usarla
date("w", $yourTime);fuente
Sólo:
2012-10-11 como $ fecha y 5 como $ día
<?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; ?>El $ result = '2012-10-12' es lo que desea.
fuente
Me temo que tienes que hacerlo manualmente. Obtenga el día de la semana actual de la fecha, calcule la compensación y agregue la compensación a la fecha.
$current = date("w", $date) $offset = $day - $current $new_date = new DateTime($date) ->add( new DateInterval($offset."D") )->format('Y-m-d')fuente
Tuve que usar una solución similar para portugués (Brasil):
<?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)fuente
<?php echo date("H:i", time()); ?> <?php echo $days[date("l", time())] . date(", d.m.Y", time()); ?>Simple, esto debería funcionar
fuente