Мне нравится перебирать все недели в диапазоне дат, который составляет 2 года. Начиная с текущего номера недели два года назад и до текущего номера недели в этом году.
Проблема в том, что в году может быть 52 или 53 недели, например:
В 2015 году было 53 недели (53-я была с 28 декабря 2015 по 03 января 2016).
В 2016 году было 52 недели (52-я была с 26.12.2016 по 01.01.2017).
Итак, в настоящее время это мой php-код:
# start with the current week 2 years ago
$year = date("Y") - 2;
$week = (int) date("W"); // (int) removes leading zero for weeks < 10
$endYear = date("Y");
$endWeek = (int) date("W");
# iterate through all weeks until now
do {
echo $week. " of ". $year;
$week++;
if ($week > 52) { // or greater 53 ?????????????
$year ++;
$week = 1;
}
}
while ($year < $endYear || $week < $endWeek);