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

Одна из самых востребованных функций, которая используется практически на каждом сайте - это функция даты date( ... ). Функция дата нужна и на больших новостных сайтах, и на маленьких личных блогах. Но вывод даты в одном формате - это далеко не единственное предназначение этой функции.

Функция даты в PHP

Давайте попробуем поэкспериментировать с этой функцией и выведем даты в совершенно разных форматах. В том числе не текущие даты, а даты через несколько дней, часов или секунд.

Приступим с примера:
<?php
   $a = date('d.m.Y H:i:s');
   echo $a;
?>
В результате выполнения этого кода в браузере появится текущая дата (дата, на которой работает сервер) в формате "ДД.ММ.ГГГГ ЧЧ:ММ:СС". Как можно догадаться, каждый символ в скобках date( ... ) выводит часть даты в своём формате. Точки и двоеточия переносятся как есть. Разберём часть возможных и самых популярных вариаций:
  • d - номер дня в месяце. Если меньше 10, то с нулём: "09", "05"
  • m - номер месяца. Если меньше 10, то с нулём: "09", "05"
  • Y - год, 4 цифры.
  • y - год, две цифры.
  • n - номер месяца. Без первого нуля, если меньше 10
  • j - номер дня в месяце. Без первого нуля, если меньше 10
  • H - часы в 24-часовом формате. Если меньше 10, то с нулём: "09", "05"
  • s - секунды. Если меньше 10, то с нулём: "09", "05"
  • i - минуты. Если меньше 10, то с нулём: "09", "05"
  • z - номер дня от начала года.
  • w - день недели (0 - воскресенье, 1 - понедельник и т.д.).
  • h - часы в 12-часовом формате
  • L - 1, если високосный год, 0, если не високосный.
  • W - порядковый номер недели года.
  • U - количество секунд, прошедших с 1 января 1970 года (то есть timestamp).
Обратите внимание на последнее значение в этом списке "U - timestamp". Оно так часто используется, что имеет свою собственную функцию time( ... ). Эта функция возвращает количество секунд с 1 января 1970 года. К примеру, "1560759834". А с помощью второго аргумента функции date( ... ) можно получать не только текущую дату сервера, но и переводить количество секунд timestamp в дату. Приведём пример, в котором вычислим дату через 3 дня относительно текущей даты:
<?php
   $a = time() + 3600 * 24 * 3; // В часе 3600 секунд. В дне 24 часа. И надо 3 дня.
   echo date('d.m.Y H:i:s', $a);
?>
В результате выполнения такого кода мы узнаем дату и время в формате "ДД.ММ.ГГГГ ЧЧ:ММ:СС" через 3 дня. Или говоря в секундах, через 3600 * 24 * 3 секунд. Можно не только прибавлять, но и отнимать секунды, чтобы получить дату в прошлом. Такой способ вычисления даты является одним из самых простых, но для полноценного использования ещё нужная функция, которая переводит дату из любого формата в timestamp. Такая функция есть и называется strtotime( ). В качестве аргумента она принимает дату в любом формате. Но лучше использовать очевидные форматы типа "ДД.ММ.ГГГГ ЧЧ:ММ:СС". Тогда она правильно разберётся, что относится к году, а что ко дню. Попробуем её на практике:
<?php
   $a = '20.06.2019'; // равно дате с нулевым временем '20.06.2019 00:00:00'
   echo strtotime($a); // результат 1560978000

   $a = '20.06.2019 14:16:29';
   $b = strtotime($a);
   echo $b; // результат 1561029389
   echo date('d.m.Y H:i', $b); // результат 20.06.2019 14:16
   echo date('d-m', $b); // результат 20-06

   $b += 3600 * 24 * 3; // добавляем три дня
   echo date('d.m.Y', $b); // результат 23.06.2019

   $b -= 3600 * 24 * 3; // отнимаем три дня
   echo date('d.m.Y', $b); // результат 20.06.2019
?>
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, покупка SSL сертификатов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: