Voici comment le faire d'une manière fraîche, avec grâce à l » relative formatsstrtotime
spéciaux.
$friday = strtotime('Next Friday', time());
$saturday = strtotime('Next Saturday', time());
$friday = strtotime('+1 Week', $friday);
$saturday = strtotime('+1 Week', $saturday);
Bien sûr, vous devez modifier pour faire exactement ce que vous voulez, mais c'est à côté du point que je voulais faire.
Notez également que strtotime
vous donnera des horodatages. Pour connaître l'utilisation de la date:
date('Y-m-d', $friday)
Une autre chose à savoir est que Next <dayofweek>
exclura votre journée en cours de la recherche, donc si vous voulez également inclure le jour courant, vous pouvez le faire comme ceci:
Et voici un script de travail complet qui fait exactement ce que vous vouliez.
<?php
// prevent multiple calls by retrieving time once //
$now = time();
$aYearLater = strtotime('+1 Year', $now);
// fill this with dates //
$allDates = Array();
// init with next friday and saturday //
$friday = strtotime('Next Friday', strtotime('-1 Day', $now));
$saturday = strtotime('Next Saturday', strtotime('-1 Day', $now));
// keep adding days untill a year has passed //
while(1){
if($friday > $aYearLater)
break 1;
$allDates[] = date('Y-m-d', $friday);
if($saturday > $aYearLater)
break 1;
$allDates[] = date('Y-m-d', $saturday);
$friday = strtotime('+1 Week', $friday);
$saturday = strtotime('+1 Week', $saturday);
}
//XXX: debug
var_dump($allDates);
?>
Bonne chance, Alin
Benchmark: ~ 0.011s –
Merci Alin, qui est juste est que je cherchais! Absolument brillant! – Ben