Разбить интервал дат на недельные периоды

У меня была задача, согласно которой, нужно разбивать интервал дат на недельные периоды. Неделей считается интервал от пн по вс либо текущего дня по вс (например, если первое число месяца выпадает на отличный от пн день) либо пн по текущий день (если конец месяца выпадает на день отличный от вс).

Пример:

входные данные 01.08.2014 — 30.08.2015

на выходе:

01.08.2014 — 03.08.2014

04.08.2014 — 10.08.2014

11.08.2014 — 17.08.2014

18.08.2014 — 24.08.2014

25.08.2014 — 31.08.2014

01.09.2014 — 07.09.2014

29.09.2014 — 30.09.2014

01.10.2014 — 05.10.2014

06.10.2014 — 12.10.2014

Мое решение. Может кому-то пригодится.

/**
* @param string $from начало периода
* @param string $to конец периода
*
* @return array
*/
function getWeekPeriod($from, $to)
{
    $weeks = [];
    $from = strtotime($from);
    $to = strtotime($to);</code>

    while ($from &lt; $to) {
        // echo "from:\t", date('d.m.Y', $from), RN;

        // номер дня недели начала периода
        $fromDay = date("N", $from);
        // echo "fromDay:\t", $fromDay, RN;

        // если не ВС
        if ($fromDay &lt; 7) {
            // кол-во дней до ВС
            $daysToSun = 7 - $fromDay;

            // echo "daysToSun:\t", $daysToSun, RN;

            // конец недельного периода
            $end = strtotime("+ $daysToSun day", $from);

            // если попадаем на след. месяц, то делаем новые вычисления
            if (date("n", $from) != date("n", $end)) {
                $end = strtotime("last day of this month", $from);
            }

            $weeks[] = [date('d.m.Y', $from), date('d.m.Y', $end)];
            $from = $end;
        } else {
            $weeks[] = [date('d.m.Y', $from), date('d.m.Y', $from)];
        }

        // echo "end:\t", date('d.m.Y', $from), RN, RN;

        $from = strtotime("+1 day", $from);
    }

    return $weeks;
}
Подробнее »

iconv_substr vs mbstring_substr

Автор статьи решил выяснить какая из функций для работы со строками работает быстрее. iconv_substr или mbstring_substr?

Подробнее »

11 англоязычных ресурсов для изучения PHP

PHP — популярный скриптовый язык, хорошо подходящий для веб-разработки. Если Вы новичок в PHP и хотите повысить свои знания, то Вам стоит посетить сайты, представленные ниже.

Подробнее »

Онлайн редактор PHP для Google Chrome

Наткнулся на онлайн-приложение — PHP редактор для Google Chrome. Веб-интерфейс поддерживает подсветку синтаксиса, доступ по FTP, проверку кода и многое другое.

Подробнее »

Получение twitter-подписчиков через Twitter XML

Воспользуемся Twitter’ом, чтобы получить количество подписчиков нашей Twitter-ленты. На многих сайтах отображается количество подписчиков, чтобы показать насколько они популярны на Twitter, надеясь, что это привлечет еще больше посетителей.

Подробнее »

Реверс-инжиниринг кнопки Google +1 с помощью Firebug’a

Автору статьи понадобилось получить счетчики для серии ссылок, чтобы отсортировать их по рангу популярности. Но Google не предоставляет информацию об API Google +1, и поэтому на помощь нам приходит Firebug.

Подробнее »

Перевод текста с помощью Google Translate API и PHP, JSON и CURL

Первоначально Google Translate API был доступен только через JavaScript. В версии 2 появилась возможность использовать REST интерфейс, который возвращает перевод в формате JSON.

Для использовани

Подробнее »

Альтернатива функциям json_encode и json_decode

Бывает что не всегда в PHP доступны функции для работы с JSON. Поэтому можно воспользоваться данной альтернативой

Подробнее »