Я использовал этот код для получения 1-й даты 1-й недели года:
echo date('Ym-d',strtotime('2018W01')); #JAN 1 is Monday, returned 01/01 echo date('Ym-d',strtotime('2013W01')); #JAN 1 is Tuesday, returned 12/31 echo date('Ym-d',strtotime('2014W01')); #JAN 1 is Wednesday, returned 12/30 echo date('Ym-d',strtotime('2015W01')); #JAN 1 is Thursday, returned 12/29 echo date('Ym-d',strtotime('2016W01')); #JAN 1 is Friday, returned 01/04!? (shouldn't it be 12/28) echo date('Ym-d',strtotime('2022W01')); #JAN 1 is Saturday, returned 01/03!? (shouldn't it be 12/27) echo date('Ym-d',strtotime('2017W01')); #JAN 1 is Sunday, returned 01/02!? (shouldn't it be 12/26)
Поскольку PHP, который больше 5.2.7, показывает мне, что понедельник – 1-й день недели, я надеялся, что 2017 год, 1-й день недели, должен быть 12/26. Есть ли какая-то конфигурация номера недели где-то для PHP, чтобы отображать 1-й день, недели, года правильно, на каждый год? ТИА
echo date('Ym-d',strtotime('2016W01')); #JAN 1 is Friday, returned 01/04!? (shouldn't it be 12/28)
Нет, это не должно быть 12/28, потому что первая неделя года имеет следующие правила:
Если 1 января находится в понедельник, вторник, среду или четверг, это на неделе 01. Если 1 января находится в пятницу, это часть недели 53 предыдущего года; если в субботу это часть 52-й недели (или 53, если предыдущий год был високосным годом); если в воскресенье это часть недели 52 предыдущего года.
Другие примеры также верны. Подробнее читайте здесь .