116 votes

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 que vous voulez obtenir un $day (spécifié par 0 (dimanche) à 6 (samedi)) de la semaine qui YYYY-mm-dd est dans.

Par exemple, si j'ai 2012-10-11 comme $date y 5 comme $day Je veux obtenir 2012-10-12 si j'ai 0 comme $day , 2012-10-14

EDITAR:
La plupart d'entre vous l'ont mal compris. J'ai eu quelques rendez-vous, $date et que vous voulez obtenir un jour spécifié par 0-6 de la même semaine $date est dans.

Donc, non, je ne veux pas que le jour du $date ...

153voto

Rezigned Points 2224

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)));

115voto

powtac Points 18619

Vous pouvez utiliser la fonction date() :

date('w'); // day of week

ou

date('l'); // dayname

Exemple de fonction pour obtenir le numéro du jour :

function getWeekday($date) {
    return date('w', strtotime($date));
}

echo getWeekday('2012-10-11'); // returns 4

19voto

air4x Points 3799

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)));

12voto

Johannes Buchholz Points 122

Si votre rendez-vous 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 commande date fonction.


Pour répondre à la question posée :

$date_time->modify($target_day_of_week - $day_of_week . ' days');

5voto

blue112 Points 2801

Manuel PHP dit :

w Représentation numérique du jour de la semaine

Vous pouvez donc construire une date avec mktime, et utiliser dans celle-ci date("w", $yourTime);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X