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

  • 2020-11-07
  • Дмитрий М.
  • 12

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

<h2>Вывод текущего года при помощи php.</h2> <p> Самой популярным действием с датами в <b>php</b> - является вывод текущего года в <b>footer<i>'е</i></b> вашего сайта. Делается это путём размещения в <b>footer<i>'е</i></b> вашего сайта следующего кода: </p> <pre class="line-numbers"><code class="language-php">&lt;? echo data('Y');?&gt; © Все права защищены. </code></pre> <h2>Вывод текущей даты в php</h2> <p> Для того чтобы вывести текущую дату в <b>php </b>используем функции <b>date()</b>. Для этого разместим в нужном месте следующее выражение: </p> <pre class="line-numbers"><code class="language-php">&lt;? echo date('d-m-Y'); ?&gt;</code></pre> <h2>Вывод текущего времени в php</h2> <p> Чтобы отобразить текущее время, опять воспользуемся функцией date(). Для этого в нужном Вам месте разместите следующее выражение: </p> <pre class="line-numbers"><code class="language-php">&lt;? echo date('Н:i:s');?&gt;</code></pre> <h2>Разбить выбранный промежуток дат на равные периоды в php</h2> <p> Допустим у Вас на сайте есть форма в которую необходимо ввести временной промежуток, выбрать даты от и до. Далее происходит какая-то обработка, запрос данных соответствующих данному временному промежутку. </p> <p> Для того, чтобы в отправляемом пользователю запросе не содержалось слишком много данных, что в первую очередь вызовет длительное время обработки этого запроса, логично разбить указанный пользователем период на равные под периоды. </p> <pre class="line-numbers"><code class="language-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-&gt;add($add23Hours); /* Данной функцией получаем заданные интервалы, интервалы являются объектом типа DateTime. Чтобы проще было работать с датами интервалов, соберём */ $dateRange = new \DatePeriod($start, $interval, $end, 0);<br> foreach ($dateRange as $key=&gt;$date) { $rsDate[] = $date-&gt;format('Y-m-d H:i:s'); } /* Если конечная дата end учитывается только в том случаи, если является начальной следующего интервала. Поэтому нужно сделать проверку на наличие даты end и если её нет, то добавить в массив. */ $last_date = new \DateTime($rsDate[count($rsDate) - 1]); if ($end-&gt;diff($last_date)-&gt;format('%d') &gt; 0){ $rsDate[] = $end-&gt;format('Y-m-d H:i:s'); }</code><br></pre> <p> В итоге в переменной <b>$rsDate</b> будет содержаться массив наших интервалов, элементы массива являются начально датой интервала. </p> <p> Для примера выведем интервалы для дат: от <b>2020-08-02</b> до <b>2020-12-03</b> с интервалами по <b>30 дней</b> </p> <pre class="line-numbers"><code class="language-php">Array ( [0] =&gt; 2020-08-02 00:00:00 [1] =&gt; 2020-09-01 00:00:00 [2] =&gt; 2020-10-01 00:00:00 [3] =&gt; 2020-10-31 00:00:00 [4] =&gt; 2020-11-30 00:00:00 [5] =&gt; 2020-12-03 23:59:59 )</code></pre>

17.11.2020 23:44:24

Примеры работы с датами в PHP. Вывод текущего года, текущей даты, текущего времени. Разбиение периода дат на равные интервалы: по месяцам, по неделям, по дням.

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

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

<? echo data('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
)


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

Возврат к списку

Другие статьи