Метод разбиения промежутка времени по дням с фиксацией времени начала и конца дня для указанного периода времени

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

Для примера представим, что клиент в абстрактной системе отчетов устанавливает период времени с 01:00 15.12.2014 по 23:00 21.12.2014 (1 неделя), за который он желает получить информацию. Фабрика отчетов на сервере умеет отдавать данные за период не более 24 часов. Вот тут и встает задача разбить промежуток времени на отрезки, с которыми потом можно работать в фабрике, т.е. на дни. Для получения можно воспользоватся функцией getDateTimeStartStopByDays (см. ниже), которая принимает в качестве параметров начало и конец периода в формате Timestamp. А на выходе мы получаем массив дат с указанием начала и конца каждого дня. Больше деталей смотрите в реализации метода.

Конечно можно работать только с датами в формате Unixtime, но в случае необходимости получения именно отформатированного массива дней, данный метод может Вам пригодится.

Коментарии по улучшению кода (стилистики, подхода, реализации и пр.) приветствуются!


Читать дальше

Unix Timestamp начало текущего дня PHP

Как получить время (timestamp) начала сегодняшнего дня в PHP?
Для этого в PHP легче всего использовать функцию mktime
int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )


Достаточно вызвать её с параметрами, которые указывают, сколько времени прошло от начала даты. Вот пример:
$dayStart = mktime(0,0,0);
переменной $dayStart будет присвоен штамп времени начала дня.
Три ноля указывают сколько прошло от даты: часов, минут, секунд. Остальные параметры: день, месяц и год — будут подставлены автоматически.