PHP получить правильную дату на первой неделе года, используя strtotime

Я использовал этот код для получения 1-го числа 1-й недели года:

echo date('Y-m-d',strtotime('2018W01'));   #JAN 1 is Monday, returned 01/01
echo date('Y-m-d',strtotime('2013W01'));   #JAN 1 is Tuesday, returned 12/31
echo date('Y-m-d',strtotime('2014W01'));   #JAN 1 is Wednesday, returned 12/30
echo date('Y-m-d',strtotime('2015W01'));   #JAN 1 is Thursday, returned 12/29
echo date('Y-m-d',strtotime('2016W01'));   #JAN 1 is Friday, returned 01/04!? (shouldn't it be 12/28)
echo date('Y-m-d',strtotime('2022W01'));   #JAN 1 is Saturday, returned 01/03!? (shouldn't it be 12/27)
echo date('Y-m-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-й день, неделю, год для каждого года? ТИА

0

Решение

echo date('Y-m-d',strtotime('2016W01'));
#JAN 1 is Friday, returned 01/04!? (shouldn't it be 12/28)

Нет, это не должно быть 12/28, потому что первая неделя года имеет следующие правила:

  • Это первая неделя с большинством (4 или более) дней в январе.
  • Его первый день — понедельник, ближайший к 1 января.
  • В нем 4 января. Следовательно, самые ранние возможные даты — с 29 декабря по 4 января, самые поздние с 4 по 10 января.
  • В нем указан первый рабочий день года, если суббота, воскресенье и 1 января не являются рабочими днями.

Если 1 января в понедельник, вторник, среду или четверг, то это на неделе 01. Если 1 января на пятницу, это часть недели 53 предыдущего года; если в субботу это часть недели 52 (или 53, если предыдущий год был високосным); если в воскресенье, это часть недели 52 предыдущего года.

Другие примеры также верны. Прочитайте больше Вот.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]