Определить четность текущей недели

Vishez

Гуру форума
Регистрация
19 Авг 2013
Сообщения
170
Реакции
83
Здравствуйте, есть такой вопрос - как рассчитать четность текущей недели на php? При этом отсчет начинается с 1 сентября(а не с 1 января). Соответственно первая неделя будет нечетной. И конечно не всегда 1 сентября будет начинаться с понедельника, это наверное тоже нужно учесть.
 
Получить порядковый номер дня недели 1 сентября поможет параметр "w" функции date Для просмотра ссылки Войди или Зарегистрируйся. Вычислить разность в днях между текущей датой и 1 сентября. Внести поправку на порядковый номер дня недели 1 сентября. Дальше делить на 7 и определять четность.

Или используя параметр "W" сразу оперировать порядковым номером недели в году.
PHP:
$curr = date_create_from_format('d.m.Y', '12.11.2014');
$base = date_create_from_format('d.m.Y', '01.09.2014');

$weeks = date_format($curr, 'W') - date_format($base, 'W') ;

// Костыль для дат после нового года
$weeks = ( $weeks < 0 ) ? $weeks + 52 : $weeks ;

$w = array("четная", "нечетная");
echo "Дата: ", date_format($curr, 'd.m.Y'), " это ", $weeks, "-я неделя (".$w[$weeks % 2].")";
 
Получить порядковый номер дня недели 1 сентября поможет параметр "w" функции date Для просмотра ссылки Войди или Зарегистрируйся. Вычислить разность в днях между текущей датой и 1 сентября. Внести поправку на порядковый номер дня недели 1 сентября. Дальше делить на 7 и определять четность.

Или используя параметр "W" сразу оперировать порядковым номером недели в году.
PHP:
$curr = date_create_from_format('d.m.Y', '12.11.2014');
$base = date_create_from_format('d.m.Y', '01.09.2014');

$weeks = date_format($curr, 'W') - date_format($base, 'W') ;

// Костыль для дат после нового года
$weeks = ( $weeks < 0 ) ? $weeks + 52 : $weeks ;

$w = array("четная", "нечетная");
echo "Дата: ", date_format($curr, 'd.m.Y'), " это ", $weeks, "-я неделя (".$w[$weeks % 2].")";
Скрипт выводит следующее "Дата: 05.09.2014 это 0-я неделя (четная)"
Как я написал в условии задачи - первая неделя учебного года - должна быть нечетной
 
Скрипт выводит следующее "Дата: 05.09.2014 это 0-я неделя (четная)"
Как я написал в условии задачи - первая неделя учебного года - должна быть нечетной
Что мешает местами поменять?
array("четная", "нечетная"); =>
array("нечетная", "четная");
PHP:
<?
$curr = date_create_from_format('d.m.Y', '12.11.2014');
$base = date_create_from_format('d.m.Y', '01.09.2014');

$weeks = date_format($curr, 'W') - date_format($base, 'W') ;

// Костыль для дат после нового года
$weeks = ( $weeks < 0 ) ? $weeks + 52 : $weeks ;

$w = array("нечетная", "четная");

echo "Дата: ", date_format($curr, 'd.m.Y'), " это ", $weeks, "-я неделя (".$w[$weeks % 2].")";
 
Или перед echo добавить $weeks++ и будет не 0-я неделя а 1-я
PHP:
$weeks++;
echo "Дата: ", date_format($curr, 'd.m.Y'), " это ", $weeks, "-я неделя (".$w[$weeks % 2].")";
 
Последнее редактирование:
Или перед echo добавить $weeks++ и будет не 0-я неделя а 1-я
PHP:
$weeks++;
echo "Дата: ", date_format($curr, 'd.m.Y'), " это ", $weeks, "-я неделя (".$w[$weeks % 2].")";
++$week;
сработает быстрее, чем
$week++;

Проверено лично!)

Куда именно добавить? Выложи рабочий код плз, если не сложно
PHP:
$curr = date_create_from_format('d.m.Y', '12.11.2014');
$base = date_create_from_format('d.m.Y', '01.09.2014');

$weeks = date_format($curr, 'W') - date_format($base, 'W') ;

// Костыль для дат после нового года
$weeks = ( $weeks < 0 ) ? $weeks + 52 : $weeks ;
++$week;
$w = array("четная", "нечетная");
echo "Дата: ", date_format($curr, 'd.m.Y'), " это ", $weeks, "-я неделя (".$w[$weeks % 2].")";
 
Последнее редактирование модератором:
Переменная объявлена как $weeks;
 
Назад
Сверху