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

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

Пример:

входные данные 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;
}
Подробнее »

Создание контроллера громкости с jQuery UI Slider

В этой статье мы создадим свой контроллер для управления громкостью, используя для этого jQuery UI Slider и оформим его своей темой.

Подробнее »

Подборка туториалов по созданию CSS3 кнопок

CSS3 все основательнее входит в нашу жизнь. Предоставляя новые возможности, он позволяет упростить создание интерфейса веб-приложений. В этой статье представлена подборка туториалов по созданию кнопок с использованием возможностей, предоставляемых стандартом CSS3.

Подробнее »

Удаляем стандартные виджеты

По умолчанию WordPress поставляется с набором различных встроенных виджетов, которые позволяют легко добавлять дополнительную функциональность вашей темы WordPress.

Подробнее »

Коллекция CSS Reset

Разработчики браузеров стараются следовать стандартам и все же на их усмотрении остаются стили по-умолчанию для некоторых HTML-элементов. Для того, чтобы хоть как-то привести элементы страницы к одному виду, были придуманы коллекции CSS правил, получившие общее название CSS Reset. В статье приведен список некоторых самых популярных способов сброса CSS стилей.

Подробнее »

Меню в WordPress. Часть 1

Одним из важных элементов сайта является меню сайта или система навигации, как его еще называют. Чем меню проще сделано и организовано, тем проще пользователю ориентироваться на страницах сайта.

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

Т.к. изучением WordPress я занимаюсь относительно недавно, у меня то же появились вопросы о том, как сделать такое-то или такое-то меню. Поэтому я решил посвятить цикл статей о работе с меню в системе управления контентом WordPress. Используемая версия WordPress 3.3.1; информация актуальна начиная с версии 3.0.0.

Подробнее »

ExtJS 3 и метод getBody

При работе с окошками (Ext.Window) в ExtJS 3.3.1 столкнулся с одним глюком.

Подробнее »

Настраиваем админку в WordPress для клиентов

Иногда при разработке сайтов приходится настраивать административный интерфейс под клиентов. Например, изменить логотип в административной панели или показать/скрыть некоторые пункты меню.
Эта статья основана на подборке из нескольких материалов по настройке WordPress.

Подробнее »

Linux: скрипт для проверки наличия запущенных процессов

Для владельцев VDS/VPS или серверов может возникнуть необходимость в контроле работы процессов, таких как: apache, nginx и т.д. На днях наткнулся на небольшой bash-скрипт, который позволяет следить за тем, запущены ли нужные процессы, и если нет, то запускает их.

Подробнее »