He aquí cómo hacerlo de una manera fresca, con un agradecimiento especial a strtotime
's relative formats.
$friday = strtotime('Next Friday', time());
$saturday = strtotime('Next Saturday', time());
$friday = strtotime('+1 Week', $friday);
$saturday = strtotime('+1 Week', $saturday);
Por supuesto debe modificarlo para hacer exactamente lo que quiere, pero ese no es el punto que estaba tratando de hacer.
También tenga en cuenta que strtotime
le dará indicaciones de tiempo. Para averiguar el uso Fecha:
date('Y-m-d', $friday)
Otra cosa a saber es que Next <dayofweek>
excluirá el día actual de la búsqueda, por lo que si usted también quiere incluir el día actual, puede hacerlo de esta manera:
$friday = strtotime('Next Friday', strtotime('-1 Day', time()));
Y aquí hay un script de trabajo completo que hace exactamente lo que usted quería.
<?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);
?>
Buena suerte, Alin
Benchmark: ~ 0.011s –
Gracias Alin, eso es sólo era lo que estaba buscando! ¡Absolutamente brillante! – Ben