Вот как это сделать круто, с особой благодарностью strtotime
* относительных форматов .
$friday = strtotime('Next Friday', time());
$saturday = strtotime('Next Saturday', time());
$friday = strtotime('+1 Week', $friday);
$saturday = strtotime('+1 Week', $saturday);
Конечно, вы должны настроить его, чтобы сделать именно то, чтоВы хотите, но это не относится к тому, что я пытался сделать.
Также обратите внимание, что strtotime
даст вам метки времени.Чтобы узнать дату, используйте:
date('Y-m-d', $friday)
Еще одна вещь, которую нужно знать, это то, что Next <dayofweek>
исключит ваш текущий день из поиска, поэтому, если вы также хотите включить текущий день, вы можете сделать это следующим образом.:
$friday = strtotime('Next Friday', strtotime('-1 Day', time()));
И вот полный рабочий скрипт, который делает именно то, что вы хотели.
<?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);
?>
Удачи, Алин