Si j'ai un $date
YYYY-mm-dd
et que je souhaite obtenir un $day
spécifique (spécifié par 0 (dimanche) à 6 (samedi)) de la semaine dans laquelle se trouve YYYY-mm-dd
.
Par exemple, si j'ai 2012-10-11
en tant que $date
et 5
en tant que $day
, je veux obtenir 2012-10-12
, si j'ai 0
en tant que $day
, 2012-10-14
MODIFIER:
La plupart d’entre vous l’ont mal comprise. J'ai une date, $date
et je veux un jour spécifié par 0-6 de la même semaine que $date
est dans.
Donc non, je ne veux pas le jour du $date
...
Je pense que c'est ce que tu veux.
$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 numéro de la journée:
function getWeekday($date) {
return date('w', strtotime($date));
}
echo getWeekday('2012-10-11'); // returns 4
Essayer
$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 en $ date et 5 en $ 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.
PHP Manual a déclaré:
w Représentation numérique du jour de la semaine
Vous pouvez donc construire une date avec mktime et y utiliser date("w", $yourTime);
Si votre date est déjà une DateTime
ou une DateTimeImmutable
, vous pouvez utiliser la méthode format
.
$day_of_week = intval($date_time->format('w'));
La chaîne de formatage est identique à celle utilisée par la fonction date .
Pour répondre à la question voulue:
$date_time->modify($target_day_of_week - $day_of_week . ' days');
J'ai bien peur que vous deviez le faire manuellement ..__ Obtenez le jour de la semaine en cours, 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')
<?php echo date("H:i", time()); ?>
<?php echo $days[date("l", time())] . date(", d.m.Y", time()); ?>
Simple, cela devrait faire l'affaire
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)