Ответы пользователя по тегу Алгоритмы
  • PHP. Есть ли решение, которое будет разбивать интервал дат на недельные периоды?

    @alexandrtumaykin Автор вопроса
    PHP-программист
    Всем спасибо. Вот мое решение:

    /**
     * @param string $from начало периода
     * @param string $to   конец периода
     *
     * @return array
     */
    function getWeekPeriod($from, $to)
    {
        $weeks = [];
        $from = strtotime($from);
        $to = strtotime($to);
    
        while ($from < $to) {
    //            echo "from:\t", date('d.m.Y', $from), RN;
    
            // номер дня недели начала периода
            $fromDay = date("N", $from);
    //            echo "fromDay:\t", $fromDay, RN;
    
            // если не ВС
            if ($fromDay < 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;
    }
    Ответ написан
    Комментировать