Номер последней недели месяца

Здравствуйте!

Подскажите пожалуйста, гуру php, почему номер последней, казалось бы, недели месяца, причем и месяц то последний в году = 01? Точнее я догадываюсь почему, но как с этим бороться?

Вот код:

$currentYear = 2012;
$weekMax = date("W", mktime(0,0,0,12,31,$currentYear));
2 ответа

Можно просто напросто проверить сначала день недели. Если он больше 3, то ваша формула, а если нет, то просто от 31 отнять номер дня недели и посчитать

$currentYear = 2012;
$d=31;
$w = date("w", mktime(0,0,0,12,$d,$currentYear));
if ($w<4) $d=$d-$w;
$weekMax = date("W", mktime(0,0,0,12,$d,$currentYear));
$date=date("Y-m-d---w", mktime(0,0,0,12,$d,$currentYear));
echo "{$weekMax}==={$date}"; //это чтобы посмотреть дату, какая получится и сколько недель


Странно, вообще-то наоборот: недели залезают в следующий год. Попробуйте

$weekMax = date("W", strtotime($currentYear.'-12-31'));

В любом случае, можно поставить костыль: не 31, а 24 число в случае, если количество недель 1. Шучу. Вот так работает нормально

licensed under cc by-sa 3.0 with attribution.