Работа с датами в 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, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: