Номер недели PHP

date_default_timezone_set('Europe/Helsinki');
$now = strtotime('now'); // 1388430373
$weekNumber = date('W', $now);
var_dump($weekNumber);

Почему этот код показывает 01?
Сейчас 30 декабря 2013 г.

Как получить номер недели right?


person Lari13    schedule 30.12.2013    source источник
comment
@Роттингем D? ОП ищет номер недели, а не день.   -  person putvande    schedule 30.12.2013
comment
Извините, ошибся, думал, что ищет день недели   -  person Rottingham    schedule 30.12.2013


Ответы (2)


Эта неделя является первой неделей нового года. Это правильный номер недели.

PS: На прошлой неделе было #52: echo date('W', strtotime('-1 week')); Вывод: 52. В году всего 52 недели, так что...

person Jessica    schedule 30.12.2013
comment
Я не могу дождаться, чтобы увидеть, сколько еще из них мы увидим до четверга, потому что это № 3 на сегодня, что я видел. - person Jessica; 30.12.2013

Номер недели ISO 8601 основан на НЕДЕЛЕ 01, т.е.

  • неделя с первым четвергом года (формальное определение ISO)

который

  • неделя с 4 января в ней,
  • первая неделя с большей частью (четыре или более) дней в начальном году,
  • неделю, начинающуюся с понедельника в период с 29 декабря по 4 января.

где неделя определяется как начинающаяся с понедельника и заканчивающаяся воскресеньем

ИЗМЕНИТЬ

В зависимости от вашего определения номера недели, вы можете рассмотреть

$weekNumber = floor(date('z', $now) / 7) + 1;

что даст количество 7-дневных периодов с 1 января, но оно будет варьироваться от года к году, какой день недели является днем ​​начала недели

person Mark Baker    schedule 30.12.2013