/ Работа с датами в PHP

Работа с датами в PHP

7 ноя 2020
Дмитрий М.
2100

Вывод текущего года при помощи php.

Самой популярным действием с датами в php - является вывод текущего года в footer вашего сайта. Делается это путём размещения в footer вашего сайта следующего кода:

<? echo date('Y');?> © Все права защищены.

Вывод текущей даты в php

Для того чтобы вывести текущую дату в php используем функции date(). Для этого разместим в нужном месте следующее выражение:

<? echo date('d-m-Y'); ?>

Вывод текущего времени в php

Чтобы отобразить текущее время, опять воспользуемся функцией date(). Для этого в нужном Вам месте разместите следующее выражение:

<? echo date('Н:i:s');?>

Разбить выбранный промежуток дат на равные периоды в php

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

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

/*
Начальную и конечную дату получаем из формы
1. начальная дата содержится в поле формы с именем - start.
2. конечная дата содержится в поле формы с именем - end.
3. Даты получаем в формате 2020-01-30  ( Y-m-d, год, месяц, день )
*/
$start = new \DateTime($_REQUEST['start']);
$end = new \DateTime($_REQUEST['end']);

/*
Указываем на какие интервалы будем разбивать временной период.
Для примера по 30 дней.
Чтобы разбить по неделям, нужно указать формат P1W
Чтобы разбить по дням, нужно указать формат P1D
*/
$interval = new \DateInterval('P30D');

/*
Добавляем к конечной дате время 23:59:59
*/
$add23Hours = new \DateInterval('PT23H59M59S');
$end->add($add23Hours);

/*
Данной функцией получаем заданные интервалы,
интервалы являются объектом типа DateTime.
Чтобы проще было работать с датами интервалов, соберём
*/
$dateRange = new \DatePeriod($start, $interval, $end, 0);
foreach ($dateRange as $key=>$date) { $rsDate[] = $date->format('Y-m-d H:i:s'); } /* Если конечная дата end учитывается только в том случаи, если является начальной следующего интервала. Поэтому нужно сделать проверку на наличие даты end и если её нет, то добавить в массив. */ $last_date = new \DateTime($rsDate[count($rsDate) - 1]); if ($end->diff($last_date)->format('%d') > 0){ $rsDate[] = $end->format('Y-m-d H:i:s'); }

В итоге в переменной $rsDate будет содержаться массив наших интервалов, элементы массива являются начально датой интервала.

Для примера выведем интервалы для дат: от 2020-08-02 до 2020-12-03 с интервалами по 30 дней

Array
(
    [0] => 2020-08-02 00:00:00
    [1] => 2020-09-01 00:00:00
    [2] => 2020-10-01 00:00:00
    [3] => 2020-10-31 00:00:00
    [4] => 2020-11-30 00:00:00
    [5] => 2020-12-03 23:59:59
)

Статья была полезна? Поблагодарите автора.

Самые читаемые
#1С Битрикс, #Bitrix CMS, #.htaccess, #настройка редиректов
4 авг 2019
#bitrix:news, #сортировка, #фильтрация, #bitrix:catalog, #catalog.section, #news.list
16 дек 2020
#Хлебные крошки, #1С Битрикс, #Bitrix CMS, #bitrix:breadcrumbs, #component_epilog, #кэширование
1 окт 2018
#bitrix, #свойства элементов, #обработчик событий, #OnBeforeIBlockElementUpdate, #OnIBlockElementSetPropertyValues
21 июл 2020
#Bitrix CMS, #breadcrumb, #bitrix:breadcrumbs, #хлебные крошки, #настройка
13 фев 2019
#ресайз изображений, #1С Битрикс, #Bitrix CMS
3 мар 2019
#bitrix, #robots.txt, #sitemap.xml, #поддомены, #мультисайтовость
16 окт 2018
#bitrix, #bitrix:catalog.section, #скидки, #товары со скидкой, #страница скидок, #страница со скидками
4 окт 2018
#bitrix, #пользовательские свойства, #тип свойств, #привязка к элементам
27 ноя 2019