Comment trouver la date d'un jour de la semaine à partir d'une date en utilisant PHP?
Si j'ai un $date
YYYY-mm-dd
et souhaitez obtenir un spécifique $day
(spécifié par 0 (dimanche) à 6 (samedi)) de la semaine YYYY-mm-dd
est dans.
Par exemple, si je suis 2012-10-11
comme $date
et 5
, comme $day
, je veux obtenir 2012-10-12
, si j'ai 0
comme $day
, 2012-10-14
Modifier:
La plupart d'entre vous l'a mal comprise. J'ai une date, $date
et je veux obtenir un jour spécifié par 0-6 de la même semaine $date
est dedans.
Donc, non, je ne veux pas le jour de $date
...
8 réponses
Je pense que c'est ce que vous voulez.
$dayofweek = date('w', strtotime($date));
$result = date('Y-m-d', strtotime(($day - $dayofweek).' day', strtotime($date)));
, Vous pouvez utiliser la fonction date ():
date('w'); // day of week
Ou
date('l'); // dayname
Exemple de fonction pour obtenir le jour nr.:
function getWeekday($date) {
return date('w', strtotime($date));
}
echo getWeekday('2012-10-11'); // returns 4
Essayez
$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)));
Juste:
2012-10-11 $par jour et de 5 $jour
<?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;
?>
Le $ result = '2012-10-12' est ce que vous voulez.
Manuel PHP dit:
W représentation Numérique du jour de la semaine
Vous pouvez donc construire une date avec mktime, et Y utiliser date("w", $yourTime);
Je crains que vous devez le faire manuellement. Obtenez le jour de la semaine en cours de la date, calculez le décalage et ajoutez le décalage à la date.
$current = date("w", $date)
$offset = $day - $current
$new_date = new DateTime($date)
->add(
new DateInterval($offset."D")
)->format('Y-m-d')
J'ai dû utiliser une solution similaire pour le portugais (Brésil):
<?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)
Si votre date est déjà un DateTime
ou DateTimeImmutable
vous pouvez utiliser le format
méthode.
$day_of_week = intval($date_time->format('w'));
La chaîne de format est identique à celle utilisée par la fonctiondate .
Pour répondre à la question prévue:
$date_time->modify($target_day_of_week - $day_of_week . ' days');